在 MongoDb 中查询嵌套数组

Posted

技术标签:

【中文标题】在 MongoDb 中查询嵌套数组【英文标题】:Query a nested array in MongoDb 【发布时间】:2011-07-12 03:52:13 【问题描述】:

我想通过嵌套数组中存在的字符串来检索文档。例如,数据(表示句子的依赖解析)如下所示:

'tuples': [['xcomp', 'multiply', 'using'], 
            ['det', 'method', 'the'], 
            ['nn', 'method', 'foil'], 
            ['dobj', 'using', 'method']]

我找到的最接近的解决方案假定['nn', ...]tuples list-of-lists 的第二个位置:

 db.c.find('tuples.2.0' : 'nn')

有没有办法放松固定位置?元组(不是它们的内容)可以按任何顺序排列。

其次,能够检索具有['nn', 'method', X] 的文档真的很棒,这意味着它们的依赖解析中的名词“方法”。

谢谢!

【问题讨论】:

【参考方案1】:

知道了!

db.c.find('tuples' : $elemMatch : $all : ['nn'])
db.c.find('tuples' : $elemMatch : $all : ['nn','method'])

【讨论】:

即使你知道'nn'在第三行,但不知道在什么位置,你仍然需要$all。根据 find 的文档,您不应该这样做。在 mongo shell 中试试这个:db.nested.insert('level1': 'level2': [['item00', 'item01'], ['item10', 'item11']])。那么,db.nested.findOne('level1.level2.0': 'item00') 为什么?

以上是关于在 MongoDb 中查询嵌套数组的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB - 查询计算数组中的嵌套文档

MongoDB:如何查询嵌套数组?

MongoDB $and 仅当 $and 在文档的同一数组索引中为真时才查询 - 特别是对于双重嵌套数组 [重复]

MongoDb - 在嵌套数组中查找特定的 obj

Mongodb查询过滤文档中的嵌套对象数组

Mongodb:查询嵌套数组的大小