MongoDB 同时查询嵌套文档字段
MongoDB query nested document fields simultaneously
集合中有文档 test
如下:
{a:2, list:[{lang:"en", value:"Mother"}, {lang:"de", value:"Mutter"}] }
当我查询时:
db.test.find({"list.lang":"de", "list.value": "Mother" })
我期望什么也得不到,但由于存在满足总条件 MongoDB 的 2 个嵌套条目的文档解决了 {a:2}
如何修复查询以仅检索两个内部字段同时满足指定条件的文档?
使用$elemMatch
:
db.test.find({ "list": { "$elemMatch": {"lang":"de", "value": "Mother" } } })
使用$all
:
db.test.find({ "list": { "$all": [{"lang":"de", "value": "Mother" }] } })
集合中有文档 test
如下:
{a:2, list:[{lang:"en", value:"Mother"}, {lang:"de", value:"Mutter"}] }
当我查询时:
db.test.find({"list.lang":"de", "list.value": "Mother" })
我期望什么也得不到,但由于存在满足总条件 MongoDB 的 2 个嵌套条目的文档解决了 {a:2}
如何修复查询以仅检索两个内部字段同时满足指定条件的文档?
使用$elemMatch
:
db.test.find({ "list": { "$elemMatch": {"lang":"de", "value": "Mother" } } })
使用$all
:
db.test.find({ "list": { "$all": [{"lang":"de", "value": "Mother" }] } })