Sub-Abfrage in MongoDB

Ich habe zwei collections in MongoDB, einer mit Nutzern und eine mit Aktionen. Die Benutzer sehen in etwa so:

{_id: ObjectId("xxxxx"), country: "UK",...} 

und Aktionen wie

{_id: ObjectId("yyyyy"), createdAt: ISODate(), user: ObjectId("xxxxx"),...}

Ich versuche, Ereignisse zu zählen und verschiedene Benutzer aufgeteilt nach Land. Die erste Hälfte ist in Ordnung, aber wenn ich versuche, fügen Sie in einer sub-query zu ziehen, das Land erhalte ich nur null-Werte für Land

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 }
    }
})

InformationsquelleAutor Youcef Kadri | 2015-07-16

Schreibe einen Kommentar