Hier ist der Datensatz:Karte Aggregation Ergebnisse in Mongo
{ "_id" : "1", "key" : "111", "payload" : 100, "type" : "foo", "createdAt" : ISODate("2016-07-08T11:59:18.000Z") }
{ "_id" : "2", "key" : "111", "payload" : 100, "type" : "bar", "createdAt" : ISODate("2016-07-09T11:59:19.000Z") }
{ "_id" : "3", "key" : "222", "payload" : 100, "type" : "foo", "createdAt" : ISODate("2016-07-10T11:59:20.000Z") }
{ "_id" : "4", "key" : "222", "payload" : 100, "type" : "foo", "createdAt" : ISODate("2016-07-11T11:59:21.000Z") }
{ "_id" : "5", "key" : "222", "payload" : 100, "type" : "bar", "createdAt" : ISODate("2016-07-12T11:59:22.000Z") }
ich zu einer Gruppe haben sie durch key
:
db.items.aggregate([{$group: {_id: {key: '$key'}}}])
, die den nächsten Satz erzeugt:
{ "_id" : { "key" : "111" } }
{ "_id" : { "key" : "222" } }
Und Danach muss ich die letzten Werte von foo
und bar
pro abrufen Gruppendatensatz. Meine Frage ist, was ist der optimale Weg, es zu tun? Ich kann die Elemente in Javascript iterieren und führen zusätzliche Roundtrip zu DB pro Gruppenergebnis. Aber ich bin mir nicht sicher, ob es zeiteffizient ist.