2

我想在sailsjs 中查询mongodb。这是我的数据库的结构

{
    “用户”:[
        "52ed09e1d015533c124015d5",
        “52ed4bc75ece1fb013fed7f5”
    ],
    “user_msgs”:[
        {
            “发件人”:“52ed09e1d015533c124015d5”,
            "sendTo": "52ed4bc75ece1fb013fed7f5",
            “味精”:“ss”
        }
    ],
    "createdAt": ISODate("2014-02-06T16:12:17.751Z"),
    "updatedAt": ISODate("2014-02-06T16:12:17.751Z"),
    "_id": ObjectID("52f3b461f46da23c111582f6")
}

我想搜索那些匹配数组的“用户”

  [
        "52ed09e1d015533c124015d5",
        “52ed4bc75ece1fb013fed7f5”
    ]
Message.find({用户: ["52ed09e1d015533c124015d5","52ed4bc75ece1fb013fed7f5"]})

此查询返回包含 1 OR 2 的所有对象 ..但我只需要那些完全匹配 1 和 2 的对象,我也尝试过 $all 等。但没有奏效请告诉我如何使用sailsjs 支持的语法编写查询让那些用户

4

2 回答 2

1

为此,您需要使用本机 Mongo 适配器:

Message.native(function(err, collection) {

   collection.find({users:{'$all':["52ed09e1d015533c124015d5","52ed4bc75ece1fb013fed7f5"]}}).toArray(function(err, results) {

     // Do something with results

   });

});
于 2014-02-14T18:07:46.187 回答
-1
Message.find()
.where({users: "52ed09e1d015533c124015d5", "52ed4bc75ece1fb013fed7f5"})
.exec(function(){
  // do something
});

虽然上面的代码可能只吸引那些用户。我认为更好的解决方案是在您的消息模型中定义您的用户 ID。

我会将以下属性添加到您的消息模型中:

senderID: {
   type: 'string'
},
receiverID: {
   type: 'string'
}

现在,您可以使用以下查询使该查询更高效:

Message.find()
.where({senderID: "52ed09e1d015533c124015d5"})
.where({receiverID: "52ed4bc75ece1fb013fed7f5"})
.exec(function(){
  // do something
});

这是我要走的路线。

于 2014-02-07T03:33:53.040 回答