MongoDB:检查嵌套键值对是否存在

问题描述 投票:2回答:1

如果得到以下数据库结构:

{ "_id" : "rv8MgKMB9qvrcoruW", "object" : "M5ZMiaqPQYP6Pv45y", "matches" : { "mbGLv9hiJJeyEcSoK" : "1", "hTcs5PYp5bXruZSTL" : "1" } }
{ "_id" : "2jksvGbg7fkguECRB", "object" : "M5ZMiaqPQYP6Pv45y", "matches" : { "mbGLv9hiJJeyEcSoK" : "2", "hTcs5PYp5bXruZSTL" : "2" } }
{ "_id" : "a5Ea5evtXkYrcjtLa", "object" : "M5ZMiaqPQYP6Pv45y", "matches" : { "JZKoX3B8gqiwotphb" : "3", "hTcs5PYp5bXruZSTL" : "3" } }
{ "_id" : "RsLhwDS5ERYxERAjX", "object" : "M5ZMiaqPQYP6Pv45y", "matches" : { "mbGLv9hiJJeyEcSoK" : "4", "JZKoX3B8gqiwotphb" : "4" } }

我喜欢在匹配中获取具有特定对象和特定键值对的数据集。

例如:我喜欢获取以下数据集:“object”:“M5ZMiaqPQYP6Pv45y”AND其中存在一个DICTIONARY集“JZKoX3B8gqiwotphb”:“3”。

所以在这种情况下输出应该是:

{ "_id" : "a5Ea5evtXkYrcjtLa", "object" : "M5ZMiaqPQYP6Pv45y", "matches" : { "JZKoX3B8gqiwotphb" : "3", "hTcs5PYp5bXruZSTL" : "3" } }

我已经尝试了数百种组合,目前我仍然坚持:

db.Matches.find ({ object: 'M5ZMiaqPQYP6Pv45y', matches: { mbGLv9hiJJeyEcSoK: { '$exists': true, $in: '3' } } })
mongodb dictionary find exists
1个回答
4
投票

使用dot notation访问子文档的字段:

db.Matches.find({object: 'M5ZMiaqPQYP6Pv45y', 'matches.JZKoX3B8gqiwotphb': '3'})
© www.soinside.com 2019 - 2024. All rights reserved.