Abfrage, kombiniert $Projekt, $entspannen & $Gruppe

Habe ich folgende Daten eingestellt:

{
  "_id" : ObjectId("57684f2b61f2af6d49fa6dbd"),
  "firstname" : "First1",
  "surname" : "Sur1",
  "email" : "[email protected]",
  "goals" : [ 
    {
        "gId" : "base1",
        "recordDate" : ISODate("2016-06-21T20:05:48.972Z")
    }, 
    {
        "gId" : "base2",
        "recordDate" : ISODate("2016-06-21T20:05:48.972Z")

    }, 
    {
        "gId" : "base1",
        "recordDate" : ISODate("2016-06-21T20:05:48.972Z")

    }
 ]
}

Muss ich das folgende Ergebnis:

{
  "_id" : ObjectId("57684f2b61f2af6d49fa6dbd"),
  "firstname" : "First1",
  "surname" : "Sur1",
  "email" : "[email protected]",
  "goals" : [
    {
       "gId" : "base1",
       "count" : 2
    },
    {
       "gId" : "base2",
       "count" : 1
    }
  ]
}

Bisher habe ich mich mit dem Aggregat-Abfrage, aber ich konnte nicht finden die Lösung für mein problem. Meine Abfrage sieht so aus, aber es funktioniert nicht. Das erste bit $project gut läuft auf seinen eigenen und tut so $unwind und $group aber ich weiß nicht wie ich es kombinieren kann, es zusammen.

db.getCollection('users').aggregate(
{
  $project : {
    firstname: "$firstname",
    surname: "$surname",
    email: "$email",
    goals: "$goals"
  }
},
{ 
  $unwind: '$goals' 
},
{ 
  $group: {
    gid: '$goals.gId',
    count: {'$sum': 1}
  }
}
)

Vielen Dank im Voraus,
Tom

Schreibe einen Kommentar