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