我在MongoDB中有两个集合,一个是用户,另一个是动作.用户看起来大致如下:
{_id: ObjectId("xxxxx"), country: "UK",...}
Run Code Online (Sandbox Code Playgroud)
和行动一样
{_id: ObjectId("yyyyy"), createdAt: ISODate(), user: ObjectId("xxxxx"),...}
Run Code Online (Sandbox Code Playgroud)
我试图计算按国家/地区划分的事件和不同用户.上半部分工作正常,但是当我尝试添加一个子查询来拉动国家时,我只能获得国家/地区的空值
db.events.aggregate({
$match: {
createdAt: { $gte: ISODate("2013-01-01T00:00:00Z") },
user: { $exists: true }
}
},
{
$group: {
_id: {
year: { $year: "$createdAt" },
user_obj: "$user"
},
count: { $sum: 1 }
}
},
{
$group: {
_id: {
year: "$_id.year",
country: db.users.findOne({
_id: { $eq: "$_id.user_obj" },
country: { $exists: true }
}).country
},
total: { $sum: "$count" },
distinct: { $sum: 1 }
} …Run Code Online (Sandbox Code Playgroud)