MongoDB查询:仅返回item.price数组不含10与20的文档
MongoDB 查询:筛选所有item.price均不含指定值的文档
需求:从集合中找出所有item数组内的price元素全部都不包含10和20的文档,预期返回item.price为[30]和[30,40]的两个文档。
正确查询语句
db.collection.find({ "item": { $not: { $elemMatch: { price: { $in: [10, 20] } } } } })
逻辑说明
$elemMatch: { price: { $in: [10, 20] } }:检查item数组中是否存在price为10或20的元素。$not对上述条件取反,确保item数组里没有任何一个元素的price是10或20,完全符合需求。
常见错误分析
如果直接使用"item.price": {$nin: [10,20]},逻辑是“数组中存在至少一个price不在[10,20]范围内”,这会误匹配那些同时包含20和30的文档(因为30不在列表里),无法满足“所有price都不含10和20”的要求。
内容的提问来源于stack exchange,提问作者usr_11
相关产品推荐
相关产品推荐

