如何编写MongoDB查询获取值数组含指定元素的键值对
MongoDB 筛选数组内嵌套字段匹配指定值的查询写法
你当前场景下的文档结构参考如下:
{ "k": "自定义键标识", "v": [ {"n": "1234", "desc": "匹配示例元素"}, {"n": "5678", "desc": "不匹配元素"} ] }
基础查询写法(满足当前需求)
直接使用点语法指向数组内的嵌套字段做等值匹配即可,MongoDB会自动遍历数组元素做校验,只要数组内存在任意一个元素的n字段值为"1234",对应的文档就会被返回:
// 将yourCollection替换为你实际的集合名称 db.yourCollection.find({ "v.n": "1234" })
扩展场景说明
- 如果你后续需要匹配同一个数组元素同时满足多个条件(例如元素的
n为"1234"且status字段为"valid"),需要使用$elemMatch运算符,避免出现跨元素匹配的逻辑错误,写法示例:
db.yourCollection.find({ "v": { $elemMatch: { "n": "1234", "status": "valid" } } })
- 仅单条件匹配数组内字段时,不需要使用
$elemMatch,直接使用点语法的查询性能更优。
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

