Mongodb 嵌套数组匹配
如何匹配嵌套数组中的对象 下面是一个示例对象:Mongodb 嵌套数组匹配,mongodb,meteor,Mongodb,Meteor,如何匹配嵌套数组中的对象 下面是一个示例对象: _id: "something", array: [[], [{id: "test"}], []] 为了匹配这一点,我尝试了数组。$.id:“test”,但它似乎工作不正常。我相信您实际上指的是作为有效结构: {“\u id”:“array”:[[],[{“\u id”:“test”}],[]} 在其中查找您使用的匹配文档: db.test.find({ "array": { "$elemMatch": { "$elemMatch": { "_
_id: "something", array: [[], [{id: "test"}], []]
为了匹配这一点,我尝试了
数组。$.id:“test”
,但它似乎工作不正常。我相信您实际上指的是作为有效结构:
{“\u id”:“array”:[[],[{“\u id”:“test”}],[]}
在其中查找您使用的匹配文档:
db.test.find({ "array": { "$elemMatch": { "$elemMatch": { "_id": "test" } } } })
我希望minimongo能够正确地支持这一点,但无论如何,这是MongoDB语法的正确服务器端
作为补充说明,2.6之前的MongoDB版本可能允许这样做:
db.test.find({ "array": { "$elemMatch": { "_id": "test" } } })
但不应该这样做,因为这是一个bug,但在2.6中已修复。由于要记录我不是指文档的数组,对不起,我想这是个糟糕的例子。你可以认为它只是子对象中的一个元素。我更新了问题。实际上我认为你的答案仍然有效。@ChristianStewart
。find()
只匹配文档。您可以投影以仅显示匹配的元素,但不能使用嵌套数组,因为匹配索引将是“外部”数组的索引。如果只需要匹配元素或数组,请使用聚合框架。