sql >> Databáze >  >> NoSQL >> MongoDB

Seskupte dokumenty Mongo podle ID a získejte nejnovější dokument podle časového razítka

Pokud děláte agregaci, musíte udělat něco podobného jako SQL, což znamená zadat operaci agregace na sloupec, jedinou možností, kterou máte, je použít $$ROOT operátor

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

Ale to trochu změní výstup

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

Chcete-li vrátit původní formát dokumentu, pravděpodobně budete poté potřebovat fázi $project



  1. MongoDB - příklad manuálových odkazů

  2. Vezmeme součet sloupce v MongoDB

  3. MongoDB Seattle 2014

  4. MongoDB:ovlivňuje velikost dokumentu výkon dotazu?