Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.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
Node.js 即使子数组不完全匹配,查询也会返回结果_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 即使子数组不完全匹配,查询也会返回结果

Node.js 即使子数组不完全匹配,查询也会返回结果,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我正在构建一个聊天应用程序。我有一个包含该对话成员的对话对象。例如,用户_1和用户_2之间的对话由一个对话对象表示,该对象具有一个“members”数组字段,该字段的引用id指向用户_1和用户_2。我的问题是,即使查询中只有1个ID,它也会返回一个结果。两个ID都应该出现在查询中,如果没有,则不返回任何内容 我尝试了从这里查询数组中精确匹配的方法。因此,我提出这样的质疑: let conversation = await ConversationSchema.findOne({ '$and':

我正在构建一个聊天应用程序。我有一个包含该对话成员的对话对象。例如,用户_1和用户_2之间的对话由一个对话对象表示,该对象具有一个“members”数组字段,该字段的引用id指向用户_1和用户_2。我的问题是,即使查询中只有1个ID,它也会返回一个结果。两个ID都应该出现在查询中,如果没有,则不返回任何内容

我尝试了从这里查询数组中精确匹配的方法。因此,我提出这样的质疑:

 let conversation = await ConversationSchema.findOne({ '$and': [
   { 'members': { '$all': [ 'user1_id', 'user1_id' ] } },
   { 'members': { '$size': 2 } },
  ]});

上面的代码仍然返回会话对象,其中['user1\u id','user2\u id']作为members字段的值。它应该返回null,因为它不存在于my DB中。

查询或文档中是否应该同时存在这两个id?同样在
$all
条件下,u查询的两个字段都是
user1\u id
而不是
['user1\u id','user2\u id']
@ambianBeing这两个id都应该出现在查询中。我正在测试我的查询,
'$all':['user1\u id','user1\u id']
应该返回null。但是,它返回具有“user1\u id”的第一个对话,即使其成员字段包含
['user1\u id','user2\u id']
。这是错误的,因为我希望查询只有在使用
$all
进行精确匹配时才会返回某些内容。我要查找的是,如果它是
['user1\u id','user2\u id']
['user2\u id','user1\u id']
,它应该会得到一个结果。但是如果它是
['user1\u id','user1\u id']
,则不应该得到结果。假设my DB只包含1个对话,并且在其成员字段上有
['user1\u id','user2\u id']
值。