Mongodb多个条件,返回错误结果
我将node.js中的mongodb与mongo本机包一起使用,我试图排除一个名为“archive”的字段中包含值1的文档,并且不断得到不合适的结果 这是我在coffeescript中的代码Mongodb多个条件,返回错误结果,mongodb,coffeescript,Mongodb,Coffeescript,我将node.js中的mongodb与mongo本机包一起使用,我试图排除一个名为“archive”的字段中包含值1的文档,并且不断得到不合适的结果 这是我在coffeescript中的代码 collection.findOne { _id : new mongo.BSONPure.ObjectID req.params.id , "archive" : 0 } , (erreur, resultat) -> if erreur console.lo
collection.findOne { _id : new mongo.BSONPure.ObjectID req.params.id , "archive" : 0 } , (erreur, resultat) ->
if erreur
console.log "Erreur: aucun contact de ce nom." + erreur
else
res.send resultat
res.end()
它不断地向我反馈:
{
"_id": "51ddb907ae3267d6154a3e64",
"archive": 1,
"nom": "G",
"prenom": "Maxim"
}
怎么了 您需要添加一些括号,以确保将
archive:0
参数指定给正确的函数。您现在拥有的相当于:
collection.findOne({ _id : new mongo.BSONPure.ObjectID(req.params.id, "archive" : 0) } , (erreur, resultat) -> ...
因此,archive:0
参数被发送到new mongo.BSONPure.ObjectId
,而findOne
只看到\u id
参数
我想你应该说:
collection.findOne { _id : new mongo.BSONPure.ObjectID(req.params.id), "archive" : 0 } , (erreur, resultat) -> ...
或者使用一个额外的变量来减少混乱:
id = new mongo.BSONPure.ObjectID req.params.id
collection.findOne { _id : id, archive: 0 }, (erreur, resultat) -> ...
我倾向于在我所有的CoffeeScript函数调用上加上括号,使其在视觉上清楚地显示发生了什么;OTOH,我是一个天生的异教徒:)这个id是你想要的吗?@CasualT是的..绝对是同一个id。哈哈,我在阅读原始问题时想到的第一件事是“哎呀,我想知道咖啡脚本中没有括号会导致错误的频率有多高”。@CasualT:可能比Ruby中的还要高,这就是为什么在这两种语言中我都不将它们视为可选的:)