MongoDB查询:匹配数组元素完全一致且长度符合的文档
MongoDB 查询数组完全匹配且长度符合要求的文档
你当前的查询存在两个核心问题:
$all仅校验数组包含指定元素,而非完全匹配所有元素;- 你只传入了一个元素到
$all中,导致只要长度为2的users数组包含该元素就会被返回,不符合「元素完全匹配」的需求。
方案1:不关心数组元素顺序(常用场景)
结合 $size 和 $all,将所有目标元素传入$all数组。这样既保证数组长度严格为2,又确保数组包含所有指定元素(等同于元素完全匹配,不考虑顺序):
db.conversations.find({ users: { $size: 2, $all: [ ObjectId("63844feadf507942caaf90e3"), ObjectId("638455e5fa983e9cf84c0f3f") ] } })
方案2:要求数组元素顺序完全一致
如果需要严格匹配数组元素的排列顺序,直接精确匹配整个数组即可:
db.conversations.find({ users: [ ObjectId("63844feadf507942caaf90e3"), ObjectId("638455e5fa983e9cf84c0f3f") ] })
内容的提问来源于stack exchange,提问作者Kannan T
相关产品推荐
相关产品推荐

