从mongodb集合获取对象数组中的匹配对象?

从mongodb集合获取对象数组中的匹配对象?,mongodb,mongodb-query,aggregation-framework,database,Mongodb,Mongodb Query,Aggregation Framework,Database,以下是我正在进行的名为测试的集合,我需要获得所有拥有“24-04-1973”DOB的人员 但是我只能通过下面的查询从allPersons数组中获取第一个对象 db.testing.find( { "allPersons.DOB":"24-04-1973" }, { _id:0,"allPersons": { $elemMatch

以下是我正在进行的名为测试的集合,我需要获得所有拥有“24-04-1973”DOB的人员

但是我只能通过下面的查询从
allPersons
数组中获取第一个对象

 db.testing.find(
       {
              "allPersons.DOB":"24-04-1973"
       },
       {
              _id:0,"allPersons":
              {
                     $elemMatch:
                     {
                            "DOB":'24-04-1973'
                     }
              }
       }
).pretty();
上述查询的结果

{
        "allPersons" : [
                {
                        "name" : "First guy",
                        "DOB" : "24-04-1973"
                }
        ]
}
但我希望得到的结果是所有拥有
DOB
的人都是
“24-04-1973”
的人,如下所示

  {
            "allPersons" : [
                    {
                            "name" : "First guy",
                            "DOB" : "24-04-1973"
                    },
                    {        
                            "name" : "Fourth guy",
                            "DOB" : "24-04-1973"
                    },
                    {
                            "name" : "Fifth guy",
                            "DOB" : "24-04-1973"
                    }
            ]
    }
有人知道生成上述结果的正确查询吗

mongo Db版本2.6.11

我是新手,请原谅,如果这很愚蠢,请尝试以下脚本:

db.doc.aggregate([
    {$unwind:"$allPersons"},
    {$match:{"allPersons.DOB":"24-04-1973"}},
    {$group:{_id:{id:"$_id", year:"$year"}, allPersons:{$push:"$allPersons"}}},
    {$project:{_id:0, allPersons:1}}  
])
它将发射:

{ 
    "allPersons" : [
        {
            "name" : "First guy", 
            "DOB" : "24-04-1973"
        }, 
        {
            "name" : "Fourth guy", 
            "DOB" : "24-04-1973"
        }, 
        {
            "name" : "Fifth guy", 
            "DOB" : "24-04-1973"
        }
    ]
}
尝试以下脚本:

db.doc.aggregate([
    {$unwind:"$allPersons"},
    {$match:{"allPersons.DOB":"24-04-1973"}},
    {$group:{_id:{id:"$_id", year:"$year"}, allPersons:{$push:"$allPersons"}}},
    {$project:{_id:0, allPersons:1}}  
])
它将发射:

{ 
    "allPersons" : [
        {
            "name" : "First guy", 
            "DOB" : "24-04-1973"
        }, 
        {
            "name" : "Fourth guy", 
            "DOB" : "24-04-1973"
        }, 
        {
            "name" : "Fifth guy", 
            "DOB" : "24-04-1973"
        }
    ]
}

请提及您的MongoDB版本?是3.2版吗?MongoDB版本2.6.11请参阅下面我的帖子。请提及您的MongoDB版本?是3.2版吗?mongo db版本2.6.11见下面我的帖子。