首页 文章

sailsjs数组查询完全匹配

提问于
浏览
2

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

{
    "users": [
        "52ed09e1d015533c124015d5",
        "52ed4bc75ece1fb013fed7f5"
    ],
    "user_msgs": [
        {
            "sender": "52ed09e1d015533c124015d5",
            "sendTo": "52ed4bc75ece1fb013fed7f5",
            "msg": "ss"
        }
    ],
    "createdAt": ISODate("2014-02-06T16:12:17.751Z"),
    "updatedAt": ISODate("2014-02-06T16:12:17.751Z"),
    "_id": ObjectID("52f3b461f46da23c111582f6")
}

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

[
        "52ed09e1d015533c124015d5",
        "52ed4bc75ece1fb013fed7f5"
    ]
Message.find({user: ["52ed09e1d015533c124015d5","52ed4bc75ece1fb013fed7f5"]})

此查询返回包含1或2的所有对象..但我只需要那些与1和2完全匹配的对象,我也尝试过$ all,等等 . 但是没有用,请告诉我如何用sailsjs支持的syntex编写查询获得这些用户

2 回答

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

    这是我要走的路线 .

  • -1

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

    Message.native(function(err, collection) {
    
       collection.find({users:{'$all':["52ed09e1d015533c124015d5","52ed4bc75ece1fb013fed7f5"]}}).toArray(function(err, results) {
    
         // Do something with results
    
       });
    
    });
    

相关问题