【问题标题】:Mongodb in operator in find Query查找查询中的运算符中的 Mongodb
【发布时间】:2014-03-04 09:57:45
【问题描述】:

我有一个如下所述的问题。

        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);
                }
            });
        });

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

【问题讨论】:

  • 你为什么使用multi:true?尝试排除它
  • 最初我没有给出 multi : true ,我仍然没有得到结果..所以我只是试着给出那个。
  • 你不是在修改文档,你是在查询;当您想修改其中的几个时使用 multi 选项...无论如何您是否尝试在控制台上运行命令?

标签: mongodb sails.js


【解决方案1】:

你没有正确使用原生find;而不是使用回调作为参数(如 Waterline 所做的那样),您将调用链接到 toArray 并将回调用作 its 参数:

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

原生 Mongo 驱动的文档是here

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    相关资源
    最近更新 更多