sql >> Database teknologi >  >> NoSQL >> MongoDB

Gruppér Mongo-dokumenter efter id og få det seneste dokument efter tidsstempel

Hvis du laver og aggregerer, skal du gøre lignende til SQL , hvilket betyder at specificere aggregeringsoperationen pr. kolonne, den eneste mulighed du har er at bruge $$ROOT operatør

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

Men det vil ændre outputtet en lille smule

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

Hvis du vil returnere det originale dokumentformat, har du sandsynligvis brug for et $projekt-stadium efter det



  1. Fjern alle felter, der er nul

  2. Hvad er Hadoop OutputFormat i MapReduce?

  3. Sådan fjerner du et dokument inde i et array i mongodb ved hjælp af $pull

  4. tar gzip mongo dump som MySQL