如何查询具有相同字段的mongodb文档

时间:2018-03-20 16:09:29

标签: mongodb mongodb-query aggregation-framework

我有多个mongodb文档,其中包含一些不同的字段,但有一个相同的字段名称作为标识符。如何使用相同的字段查询不同的文档?例如,以下文档都有“name”字段,但没有其他共同字段。

{ "_id" : 1, "name" : "dave123", "gender" : "male"}
{ "_id" : 2, "name" : "dave123", "age" : 23}
{ "_id" : 3, "name" : "an567",  "gender" : "male"}
{ "_id" : 4, "name" : "an567", "age" : 21}

如果我想查询每个男性并且是23岁的人,我该怎么做呢?以下代码不返回任何内容,因为没有包含这两个字段的文档。相反,有两个单独的文档,每个文档都有一个匹配的字段。

df.collections.find({$and: [{"gender" : "male"}, {"age" : 23}]})

2 个答案:

答案 0 :(得分:1)

使用$group首先准备数据,然后在汇总查询中准备$match

这样的东西
db.collections.aggregate([
  {"$group":{
    "_id":"$name",
    "gender":{"$push":"$gender"},
    "age":{"$push":"$age"}
  }},
  {"$match":{"gender":"male","age":23}}
])

答案 1 :(得分:0)

如果您在文档中没有genderage,那么您的查询就不会有任何结果