Node.js Mongoose findOne不适用于特定查询,但适用于其他查询
我试图使用Node.js Mongoose findOne不适用于特定查询,但适用于其他查询,node.js,mongodb,mongoose,nosql,Node.js,Mongodb,Mongoose,Nosql,我试图使用mongoose使用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
mongoose
使用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://sokrostream.com/wp-content/uploads/2013/09/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)
我希望您能看到这个问题,几天前我刚刚开始使用mongoDB
&mongoose
,所以这个错误可能是非常基本的。非常感谢您的帮助
如前所述,以下是模式:
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'});
这是猫鼬的完整代码:
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}
。而您正试图在其中找到一个整数
请将customID
的类型更改为Number
类似customID:{type:Number}
正确定义模式非常重要 你能给猫鼬看看吗code@AzoulayJason你是指模式吗?如果是这样,那么它与示例对象几乎相同。至于在这里调用db的代码是:collection.findOneAndUpdate({“customID”:80074},{$inc:{“views”:1},{projection:projection},(err,element)=>{if(err)return res.status(400).send(err);res.status(200.send(element);});我猜他是在要求mongoose模式定义,请为上述集合添加mongoose定义。这样:@RaghavGarg我用相关的代码片段编辑了我的问题,如果我需要添加其他内容,请告诉我。@RaghavGarg非常感谢,我的错,我应该验证模式。