简体   繁体   中英

MongoDB same query works on Shell but doesn't work using mongoose in nodejs

let mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/MovieDataset').
    then(() => console.log('Connected to MongoDB')).
    catch((error) => console.log(error));
    
let dbschema = new mongoose.Schema({});
const Movie = mongoose.model('Movie', dbschema, 'film');

async function infos() {
    //1
    const Totalmovies = await Movie.find({}).countDocuments();
    console.log(Totalmovies);
    //2
    const Info = await Movie.find( { country:"USA", genre:"crime"} );
    console.log(Info)
}
infos()

Here the first query returns 88 which is correct. But the second query returns all the 88 movie Infos from the database. I ran the same query in MongoDB compass shell and it returned only the documents it matches.

Here is the returned result from Shell command

And here is a snippet of retuned result using mongoose in nodejs:

{
    title: 'Le grand bleu',
    year: 1988,
    genre: 'drama',
    summary: "Jacques Mayol et Enzo Molinari se connaissent depuis l'enfance. Tous deux experts en apnée, s'affrontent continuellement pour obtenir le record du monde de plongée. Toujours en rivalité, les deux hommes descendent de plus en plus profond, au risque de leurs vies. Le film est ressorti en janvier 89 en version longue d'une durée de 2h40. ",
    country: 'FR',
    director: {
      _id: 'artist:111',
      last_name: 'Besson',
      first_name: 'Luc',
      birth_date: '1959'
    },
    actors: [ [Object], [Object], [Object] ]
  },
  {
    title: 'Spider-Man',
    year: 2002,
    genre: 'Action',
    summary: "Orphelin, Peter Parker est élevé par sa tante May et son oncle Ben dans le quartier Queens de New York. Tout en poursuivant ses études à l'université, il trouve un emploi de photographe au journal Daily Bugle. Il partage son appartement avec Harry Osborn, son meilleur ami, et rêve de séduire la belle Mary Jane.Cependant, après avoir été mordu par une araignée génétiquement modifiée, Peter voit son agilité et sa force s'accroître et se découvre des pouvoirs surnaturels. Devenu Spider-Man, il décide d'utiliser ses nouvelles capacités au service du bien.Au même moment, le père de Harry, le richissime industriel Norman Osborn, est victime d'un accident chimique qui a démesurément augmenté ses facultés intellectuelles et sa force, mais l'a rendu fou. Il est devenu le Bouffon Vert, une créature démoniaque qui menace la ville. Entre lui et Spider-Man, une lutte sans merci s'engage.",       
    country: 'USA',
    director: {
      _id: 'artist:187',
      last_name: 'Raimi',
      first_name: 'Sam',
      birth_date: '1959'
    },
    actors: [ [Object], [Object], [Object], [Object], [Object] ]
  },
  {
    title: 'King of New York',
    year: 1990,
    genre: 'drama',
    summary: "L'histoire d'un gangster au grand coeur mais aux méthodes définitives, surlast_namemé par le presse The King of New York et qui rêve de fonder un hôpital, confronté a des policiers opiniâtres qui ont juré de l'abattre...",
    country: 'USA',
    director: {
      _id: 'artist:122',
      last_name: 'Ferrara',
      first_name: 'Abel',
      birth_date: '1951'
    },
    actors: [ [Object], [Object], [Object], [Object], [Object], [Object] ]
  },
  {
    title: 'The Matrix reloaded',
    year: 2003,
    genre: 'Science-fiction',
    summary: "Neo apprend à mieux contrôler ses dons naturels, alors même que Sion s'apprête à tomber sous l'assaut de l'Armée des Machines. D'ici quelques heures, 250 000 Sentinelles programmées pour anéantir notre espèce envahiront la dernière enclave humaine de la Terre.Mais Morpheus galvanise les citoyens de Sion en leur rappelant la Parole de l'Oracle : il 
est encore temps pour l'Elu d'arrêter la guerre contre les Machines. Tous les espoirs se reportent dès lors sur Neo. Au long de sa périlleuse plongée au sein de la Matrix et de sa propre destinée, ce dernier sera confronté à une résistance croissante, une vérité encore plus aveuglante, un choix encore plus douloureux que tout ce qu'il avait jamais imaginé.",    
    country: 'USA',
    director: {
      _id: 'artist:61',
      last_name: 'Wachowski',
      first_name: 'Andy',
      birth_date: '1967'
    },
    actors: [ [Object], [Object], [Object], [Object] ]
  },
  {
    title: 'The Matrix Revolutions',
    year: 2003,
    genre: 'Science-fiction',
    summary: "La longue quête de liberté des rebelles culmine en une bataille finale explosive. Tandis que l'armée des Machines sème la désolation sur Zion, ses citoyens organisent une défense acharnée. Mais pourront-ils retenir les nuées implacables des Sentinelles en attendant que Neo s'approprie l'ensemble de ses pouvoirs et mette fin à la guerre ?L'agent Smith est quant à lui parvenu à prendre possession de l'esprit de Bane, l'un des membres de l'équipage de l'aéroglisseur. De plus en plus puissant, il est désormais incontrôlable et n'obéit plus aux Machines : il menace de détruire leur empire ainsi que le monde réel et la Matrice... ",
    country: 'USA',
    director: {
      _id: 'artist:135',
      last_name: 'Phoenix',
      first_name: 'Joaquin',
      birth_date: '1974'
    },
    actors: [ [Object], [Object], [Object], [Object], [Object] ]
  },
  {
    title: 'De bruit et de fureur',
    year: 1988,
    genre: 'drama',
    summary: "L'histoire de Bruno, enfant attardé des banlieues et des H.L.M., plongé dans la violence de son milieu, et dont la vie va se consumer comme une étoile filante.",       
    country: 'FR',
    director: {
      _id: 'artist:138',
      last_name: 'Chabrol',
      first_name: 'Claude',
      birth_date: '1930'
    },
    actors: [ [Object], [Object], [Object] ]
  },
  {
    title: 'Usual suspects',
    year: 1995,
    genre: 'Thriller',
    summary: "Une légende du crime contraint cinq malfrats à aller s'aquitter d'une tâche très périlleuse. Ceux qui survivent pourront se partager un butin de 90 millions de dollars.",
    country: 'USA',
    director: {
      _id: 'artist:142',
      last_name: 'Dern',
      first_name: 'Laura',
      birth_date: '1967'
    },
    actors: [ [Object], [Object], [Object], [Object], [Object] ]
  },
  {
    title: 'Bad Lieutenant',
    year: 1992,
    genre: 'drama',
    summary: "La descente aux enfers d'un flic pourri qui enquete sur le viol d'une jolie religieuse.",
    country: 'USA',
    director: {
      _id: 'artist:122',
      last_name: 'Ferrara',
      first_name: 'Abel',
      birth_date: '1951'
    },
    actors: [ [Object] ]
  },

Also here the Movie Dataset is a pre-existing dataset, Imported as JSON.

Here, dbname: MovieDataset

Collection Name: film

No matter what query I run it always returns all the documents, even a wrong query does not return null. What is wrong with my queries? Is there a problem in my model or schema?

I guess it's a typo mistake, here is the working link: Mongo playground

You just remove one of { in Info

 const Info = await Movie.find( { country:"USA", genre:"crime"} );

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM