MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Agrupe documentos Mongo por id e obtenha o documento mais recente por carimbo de data/hora


Se você estiver fazendo e agregação, você precisa fazer semelhante ao SQL , o que significa especificar a operação de agregação por coluna, a única opção que você tem é usar o $$ROOT operador
db.test.aggregate(
   [
    { $sort: { timestamp: 1 } },
     {
       $group:
         {
           _id: "$fooId",
           timestamp: { $last: "$$ROOT" }
         }
     }
   ]
);

Mas isso vai mudar um pouco a saída
{ "_id" : "1", "timestamp" : { "_id" : ObjectId("570e6be3e81c8b195818e7fa"), 
  "fooId" : "1", "status" : "A", "timestamp" :ISODate("2016-01-01T00:00:00Z"), 
  "otherInfo" : "BAR" } }

Se você quiser retornar ao formato original do documento, provavelmente precisará de um estágio $project depois disso