MongoDB如何查询数组同时包含多个指定属性值的文档
实现查询的MongoDB命令
你可以直接使用以下两种写法实现需求,均可以筛选出fruit数组同时包含red和green颜色元素的文档:
写法1:简洁版(适配当前单字段匹配场景)
// 请将yourCollectionName替换为你实际的集合名称 db.yourCollectionName.find({ $and: [ { "fruit.fruit_color": "red" }, { "fruit.fruit_color": "green" } ] })
逻辑说明
直接对数组嵌套字段做值匹配时,MongoDB会判定数组中存在任意一个元素满足条件即返回true,通过$and组合两个匹配条件,就要求数组必须同时存在两种颜色的元素,符合你的查询要求。
写法2:通用扩展版(适配多条件匹配场景)
// 请将yourCollectionName替换为你实际的集合名称 db.yourCollectionName.find({ fruit: { $all: [ { $elemMatch: { fruit_color: "red" } }, { $elemMatch: { fruit_color: "green" } } ] } })
逻辑说明
$elemMatch用于精准匹配数组内的单个元素,如果你后续需要新增其他匹配规则(比如同时要求fruit_id满足特定格式),直接在$elemMatch内新增字段即可$all要求数组必须包含所有指定的$elemMatch匹配结果,刚好满足同时存在两种颜色的要求
内容的提问来源于stack exchange,提问作者Arien Liu
相关产品推荐
相关产品推荐

