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

Posted

技术标签:

【中文标题】MongoDB:检查嵌套键值对是不是存在【英文标题】:MongoDB: check if nested key value pair existsMongoDB:检查嵌套键值对是否存在 【发布时间】:2013-08-14 13:21:49 【问题描述】:

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

 "_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”以及哪里存在 DICTIONARY 集“JZKoX3B8gqiwotphb”:“3”。

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

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

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

db.Matches.find ( object: 'M5ZMiaqPQYP6Pv45y', matches:  mbGLv9hiJJeyEcSoK:  '$exists': true, $in: '3'   )

【问题讨论】:

【参考方案1】:

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

db.Matches.find(object: 'M5ZMiaqPQYP6Pv45y', 'matches.JZKoX3B8gqiwotphb': '3')

【讨论】:

以上是关于MongoDB:检查嵌套键值对是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

TP5如何向mongoDB插入一个键值为null!

JavaScript:推送嵌套对象键值对

空手道 DSL - 使用重试直到检查数组,直到所有项目中都存在特定的键值对[重复]

mongodb如何删除集合中的指定键值对???

根据嵌套键值对对象数组进行排序的最快方法

dict update 更新嵌套键值对[重复]