MongoDB如何查询数组字段包含全部指定ObjectId的文档
解决方案
你需要把查询语句中的$in运算符替换为MongoDB专门用于「数组包含所有指定元素」场景的$all运算符即可。
修改后的查询语句如下:
{ subcategories: { $all: [ ObjectId('61729d550e8fe20011cc57d2'), ObjectId('61693f589a34340012b1d5d8'), ObjectId('61693f2c9a34340012b1d5b7') ] } }
补充说明
$all的筛选逻辑和$in恰好对应:$in要求数组存在至少一个匹配项,$all要求数组包含所有匹配项,完全符合你要求的「缺少任意一个目标ID就不返回文档」的需求。- 注意你原来的查询代码存在语法错误,第一个ObjectId调用末尾缺少右括号,修改时记得修正即可。
内容的提问来源于stack exchange,提问作者tanjiro
相关产品推荐
相关产品推荐

