我想在sailsjs中查询mongodb。 这是我的db的结构
{ "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"]})
答案 0 :(得分:1)
您需要使用本机Mongo适配器:
Message.native(function(err, collection) {
collection.find({users:{'$all':["52ed09e1d015533c124015d5","52ed4bc75ece1fb013fed7f5"]}}).toArray(function(err, results) {
// Do something with results
});
});
答案 1 :(得分:-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
});
这是我要走的路线。