sql >> Databasteknik >  >> NoSQL >> MongoDB

Gruppera Mongo-dokument efter id och få det senaste dokumentet efter tidsstämpel

Om du gör och aggregerar måste du göra liknande SQL , vilket innebär att specificera aggregeringsoperationen per kolumn, det enda alternativet du har är att använda $$ROOT operatör

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

Men det kommer att ändra resultatet lite

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

Om du vill returnera det ursprungliga dokumentformatet behöver du förmodligen ett $projektsteg efter det



  1. mongodb replicaset new member visar inte korrekt diskanvändning på EC2

  2. Hur löser man ClassNotFoundException:com.mongodb.connection.BufferProvider?

  3. Spring Boot anslut Mysql och MongoDb

  4. Mongolab nodejs topologi förstört