> db.test.insert({"a" : { "b" : { "c" : { "d1" : [ "e1" ],
"d2" : [ "e2" ],
"d3" : [ "e3", "e4" ],
"d4" : [ "e5", "e6" ] } } } })
> db.test.find({'a.b.c' : {$exists : true}})
{ "_id" : ObjectId("4daf2ccd697ebaacb10976ec"), "a" : { "b" : { "c" : { "d1" : [ "e1" ], "d2" : [ "e2" ], "d3" : [ "e3", "e4" ], "d4" : [ "e5", "e6" ] } } } }
Run Code Online (Sandbox Code Playgroud)
但这些都不起作用:
> db.test.find({'a.b': "c"})
> db.test.find({'a.b': {$elemMatch : {"c" : {$exists: true}}}})
> db.test.find({'a.b': {$elemMatch : {$elemMatch : {$all : ["e1"] }}}})
Run Code Online (Sandbox Code Playgroud)
假设我不知道c
和d1
... 的值是什么d4
.是否有一种通用的方法来搜索嵌套对象的结构中的特定值?
我以为那$elemMatch
是为了什么.
谢谢.
我以为这就是$ elemMatch的用途......
从文档:使用$ elemMatch查询运算符,您可以匹配数组中的整个文档.
这听起来不像你在寻找什么.
是否有一种通用的方法来搜索嵌套对象的结构中的特定值?
听起来你想要搜索"对象'c'中的所有内容以获取'e1'的实例".
MongoDB支持两个相关的功能,但功能并不是你想要的.
db.test.find({'a.b.c.d1' : 'e1'})
听起来你正在寻找能够同时做到这两点的能力.您希望在同一查询中"到达对象"和"通过数组读取".
不幸的是,我不知道这样的功能.您可能想要为此提交功能请求.
归档时间: |
|
查看次数: |
12100 次 |
最近记录: |