Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sails.js sailsjs数组查询精确匹配_Sails.js_Waterline - Fatal编程技术网

Sails.js sailsjs数组查询精确匹配

Sails.js sailsjs数组查询精确匹配,sails.js,waterline,Sails.js,Waterline,我想在sailsjs中查询mongodb。 这是我的数据库的结构 { "users": [ "52ed09e1d015533c124015d5", "52ed4bc75ece1fb013fed7f5" ], "user_msgs": [ { "sender": "52ed09e1d015533c124015d5", "sendTo": "52ed4bc75ece1fb013fe

我想在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” ], “用户\u msgs”:[ { “发送方”:“52ed09e1d015533c124015d5”, “发送至”:“52ed4bc75ece1fb013fed7f5”, “msg”:“ss” } ], “createdAt”:ISODate(“2014-02-06T16:12:17.751Z”), “更新日期”:ISODate(“2014-02-06T16:12:17.751Z”), “_id”:对象id(“52f3b461f46da23c111582f6”) } 我想搜索那些匹配数组的“用户”[ [ "52ed09e1d015533c124015d5", "52ed4bc75ece1fb013fed7f5" ] “52ed09e1d015533c124015d5”, “52ed4bc75ece1fb013fed7f5” ] Message.find({用户:[“52ed09e1d015533c124015d5”,“52ed4bc75ece1fb013fed7f5”]})
此查询返回包含1或2的所有对象。但我只需要与1和2完全匹配的对象, 我也试过$all等等。。但没有起作用 请告诉我如何使用sailsjs支持的syntex编写查询,以获取这些用户的消息。find() 。其中({用户:“52ed09e1d015533c124015d5”,“52ed4bc75ece1fb013fed7f5”}) .exec(函数(){ //做点什么 }); 而上面的代码可能只用于吸引这些用户。我认为更好的解决方案是在消息模型中定义用户ID

我将向您的消息模型添加以下属性:

senderID:{
键入:“字符串”
},
受接管人:{
键入:“字符串”
}
现在,您可以使用以下查询使该查询更高效:

Message.find()
.其中({senderID:“52ed09e1d015533c124015d5”})
.其中({接收方:{52ed4bc75ece1fb013fed7f5})
.exec(函数(){
//做点什么
});

这是我要走的路线。

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

Message.native(function(err, collection) {

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

     // Do something with results

   });

});

谢谢你的回答,但这对我不起作用。我为mongodb创建的上述模式允许1-1和多用户聊天..类似于组对话。在“用户”数组中,我希望选择此聊天中的用户ID。在检索数据时,我希望选择用户的确切数组。。where还返回具有其中一个的所有对象这是不正确的语法:
。where({users:“52ed09e1d015533c124015d5”,“52ed4bc75ece1f013fed7f5”})
Message.native(function(err, collection) {

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

     // Do something with results

   });

});