MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Gruppieren Sie Mongo-Dokumente nach ID und erhalten Sie das neueste Dokument nach Zeitstempel

Wenn Sie eine Aggregation durchführen, müssen Sie ähnlich wie bei SQL vorgehen, was bedeutet, dass Sie die Aggregationsoperation pro Spalte angeben. Die einzige Option, die Sie haben, ist die Verwendung von $$ROOT Betreiber

db.test.aggregate(
   [
    { $sort: { timestamp: 1 } },
     {
       $group:
         {
           _id: "$fooId",
           timestamp: { $last: "$$ROOT" }
         }
     }
   ]
);

Aber das wird die Ausgabe ein wenig verändern

{ "_id" : "1", "timestamp" : { "_id" : ObjectId("570e6be3e81c8b195818e7fa"), 
  "fooId" : "1", "status" : "A", "timestamp" :ISODate("2016-01-01T00:00:00Z"), 
  "otherInfo" : "BAR" } }

Wenn Sie das ursprüngliche Dokumentformat zurückgeben möchten, benötigen Sie danach wahrscheinlich eine $project-Stufe