小编You*_*dri的帖子

MongoDB中的子查询

我在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)

join mongodb objectid

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

join ×1

mongodb ×1

objectid ×1