2016-07-22 27 views
1

Ich habe die Datenerfassung wie folgt aus:MongoDB Daten mit Aggregation Gruppierung

> db.LogBuff.find() 
{ "_id" : ObjectId("578899d5d2b76f77d083f16c"), "SUBJECT" : "DD", "SYS" : "A" } 
{ "_id" : ObjectId("578899d5d2b76f77d083f16d"), "SUBJECT" : "AA", "SYS" : "B" } 
{ "_id" : ObjectId("578899d5d2b76f77d083f16e"), "SUBJECT" : "BB", "SYS" : "A" } 
{ "_id" : ObjectId("578899d5d2b76f77d083f16f"), "SUBJECT" : "AA", "SYS" : "C" } 
{ "_id" : ObjectId("578899d5d2b76f77d083f170"), "SUBJECT" : "BB", "SYS" : "A" } 
{ "_id" : ObjectId("578899d5d2b76f77d083f171"), "SUBJECT" : "BB", "SYS" : "A" } 
{ "_id" : ObjectId("578899d5d2b76f77d083f172"), "SUBJECT" : "CC", "SYS" : "B" } 

Und ich möchte, wie unten Ausgang extrahieren (mit ausgeprägtem „SYS“ Werte)

{"SUBJECT" : "AA", "SYS" : ["A","B","C","D"]} 
{"SUBJECT" : "BB", "SYS" : ["A","B","C","D"]} 
{"SUBJECT" : "CC", "SYS" : ["A","B","C"]} 

Hier ist mein Code und ich bin in der Mitte stecken, bitte helfen Sie mir diese

db.LogBuff.aggregate([{ 
    "$unwind": "$SYS" 
}, { 
    "$group": { 
      _id: { 
        "_id": "$SUBJECT" 
      }, 
      SYST: { 
        $addToSet: "$SYS" 
      } 
    } 
}, { 
    "$unwind": "$SYST" 
}, { 
    "$group": { 
      _id: { 
      "SUBJECT": "$_id", 
        "SYST":"$SYST" 
      } 
    } 
}]) 
+2

Was ist die Verwendung des 'unwind' $ Operators in der ersten Pipeline, wenn das' SYS' Feld kein Array ist? Warum führen Sie nicht 'db.LogBuff.aggregate ([ { " $ group "): { " _id ":" $ SUBJECT ", " sys ": {" $ addToSet ":" $ SYS "} } } ]) '? – chridam

Antwort

3

Gerade Gruppe der _id zu sortieren, und 0.123.die SYS-Werte:

db.LogBuff.aggregate([ 
    { 
    "$group": { 
      _id: { 
        "_id": "$SUBJECT" 
      }, 
      SYST: { 
        $addToSet: "$SYS" 
      } 
     } 
    } 
]) 

Keine Notwendigkeit für Abwickler, ein group sollten Sie das gewünschte Ergebnis erhalten.

Ergebnis Gruppe Aggregation auf Beispieldaten:

{ "_id" : { "_id" : "CC" }, "SYST" : [ "B" ] } 
{ "_id" : { "_id" : "BB" }, "SYST" : [ "A" ] } 
{ "_id" : { "_id" : "AA" }, "SYST" : [ "C", "B" ] } 
{ "_id" : { "_id" : "DD" }, "SYST" : [ "A" ] } 
+0

Vielen Dank – Kavinda