Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb多个条件,返回错误结果_Mongodb_Coffeescript - Fatal编程技术网

Mongodb多个条件,返回错误结果

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

我将node.js中的mongodb与mongo本机包一起使用,我试图排除一个名为“archive”的字段中包含值1的文档,并且不断得到不合适的结果

这是我在coffeescript中的代码

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中的还要高,这就是为什么在这两种语言中我都不将它们视为可选的:)