2014-03-04 79 views
3

我有一个查询如下所述。Mongodb在查找运算符查询

 var projstat = ['A' , 'B']; 
     Post.native(function(err, collection) { 

      if (err) 
       console.log(err); 

      collection.find({ 
       'status': { 
        "$in": projstat 
       } 
      }, {multi: true}, function(err, result) { 

       console.log(result); 
       if (req.isSocket) { 
        return res.json(result); 
       } 
      }); 
     }); 

请纠正我,如果我错了,因为它不列入返回任何结果。请帮忙。

+1

为什么要使用'多:TRUE'?尝试排除它 – anvarik

+0

最初我没有给多:真,仍然没有得到结果..所以我只是试图给。 – Mahahari

+0

你没有修改文件,你在查询;当你想要修改其中的几个时使用多选项...无论如何,你尝试在控制台上运行命令? – anvarik

回答

3

您没有正确使用本机find;而不是使用一个回调作为参数(如水线一样),你链上的呼叫toArray和使用回调作为参数:

collection.find({ 
    'status': { 
     "$in": projstat 
    } 
}).toArray(function(err, results) {...}); 

文档的本地蒙戈司机是here

但是,在这种情况下更重要的一点是,根本不需要native。您可以使用常规的水线find,它会自动完成的in查询时的属性被设置为一个数组:

Post.find({status: projstat}).exec(function(err, results) {...});