我有2个集合,其中一个被引用到第二个集合中。现在我想执行一个聚合查询,根据引用它的第一个字段对第二个集合进行分组
我的模型首先是:
first:{_id:ObjectId, name:String, region:String}
the second has this model `second:{_id:ObjectId, name:String, firsts:[$first]}
我的文件如下:
第一份文件:
{
"_id" : ObjectId("562a0f68f6a47a33b4000a52"),
"name" : "Name",
"region" : "Sicilia"
}
第二份文件:
{
"_id" : ObjectId("562a1250249c98273459be4a"),
"name" : "Name",
"firsts" : [
{ "first" : ObjectId("562a0f68f6a47a33b4000a52")},
{ "first" : ObjectId("562a0f68f6a47a33b400084d")}
]
}
`
结果我想缝这个
{
"_id": ObjectId of second document,
"region": "region"
}
我需要在每个first.region上对第二个集合进行分组。可能吗?
答案 0 :(得分:-1)
有两种选择。
db.first.find({},{region:1}).forEach(function(doc) {
db.second.find({ "firsts" : doc.region });
});
或
var data = db.members.find({},{region:1}).toArray();
db.second.find({ "firsts" : { "$in" : data} });