MongoDB匹配数组内的子文档(不是位置引用)

时间:2017-04-27 13:47:30

标签: mongodb

我的MongoDB有一个键值对结构,在我的文档中有一个data字段,该字段包含两个字段的许多子文档:namevalue

如何搜索子文档,例如({"name":"position", "value":"manager"})和多个(例如{"name":"age", "value" : {$ge: 30}}

编辑:我不是在寻找一个特定的子文档,就像我在标题中提到的那样(不是位置引用),而是,我想要检索整个文档,但我需要它来完全匹配这两个子文档。

1 个答案:

答案 0 :(得分:1)

以下是2个查询以查找以下记录:

ForeignKeyTable

注意如何使用{ "_id" : ObjectId("sometobjectID"), "data" : [ { "name" : "position", "value" : "manager" } ] } // Both value and name (in the same record): db.demo.find({$elemMatch: {"value": "manager", "name":"position"}}) // Both value and name (not necessarily in the same record): db.demo.find({"data.value": "manager", "data.name":"position"}) // Just value: db.demo.find({"data.value": "manager"}) ,这适用于所有子文档,即使它们在数组中。

您可以在此处使用您喜欢的任何运算符,包括.

编辑

由于@ Veeram's回复

$ elemMatch已添加回答

This answer解释了$gte$elemMatch

之间的区别