【问题标题】:MongoError: $all requires arrayMongoError: $all 需要数组
【发布时间】:2014-02-28 14:27:52
【问题描述】:

我正在使用sailsjs mongodb 和node.js 我在 mongodb 查询中出现错误,请帮助!
我想获得与 $all: [ senderID , sendToID ]

完全匹配的那些消息的结果 这是我在 mongodb 中的文档“消息”。

{ “用户”:[ "52ed09e1d015533c124015d5", “52ed4bc75ece1fb013fed7f5” ], “user_msgs”:[], "createdAt": ISODate("2014-02-04T11:59:53.220Z"), "updatedAt": ISODate("2014-02-04T11:59:53.220Z"), “_id”:对象ID(“52f0d639b922c9142763c336”) }

现在我想查询

 Message.find({ users : { $all: [ msg.sender , msg.sendTo ] } })

                    .done(function (err, detail) {
                如果(错误){
                    控制台日志(错误)
                  } 别的 {

                    控制台日志(详细信息)}

          });

返回错误

{[MongoError:$all 需要数组] name:'MongoError'} 

我正在关注文档 http://docs.mongodb.org/manual/reference/operator/query/all/ 但仍然不知道是什么导致了问题

【问题讨论】:

  • msg.sendermsg.sendTo 有效吗?
  • msg.sender 和 msg.sendTo 是一个有效值,例如 "52ed09e1d015533c124015d5"
  • 您是否在 mongo shell 中测试过您的查询以找出问题的来源?那里的一个简单测试也对我有用......
  • @chk 我正在使用sailsjs,它有一个工具waterline 和sails-mongo...
  • @AbdulAleem 你可以直接用 mongo shell 测试查询吗?只是为了检查查询本身是否有效,在这种情况下,它可能是数据库驱动程序问题。

标签: node.js mongodb sails.js


【解决方案1】:

目前在 Waterline 中没有查询嵌入记录的方法。不过,您可以在sails-mongo 中下拉到本机mongo 驱动程序并运行查询。以下内容应该可以满足您的需求。

User.native(function(err, collection) {
    collection.find({ users: { 
        $all: [ "52ed09e1d015533c124015d5", "52ed4bc75ece1fb013fed7f5" ] 
    }}).toArray(function(err, docs) {
       // Do something here
    });
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 2019-03-25
    • 1970-01-01
    • 2020-08-15
    • 2013-10-13
    • 1970-01-01
    • 2014-06-27
    相关资源
    最近更新 更多