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