从mongodb集合获取对象数组中的匹配对象?
以下是我正在进行的名为测试的集合,我需要获得所有拥有“24-04-1973”DOB的人员 但是我只能通过下面的查询从从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
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见下面我的帖子。