sql >> Database >  >> NoSQL >> MongoDB

Groepeer Mongo-documenten op id en ontvang het nieuwste document op tijdstempel

Als u doet en aggregatie doet, moet u hetzelfde doen als SQL , wat betekent dat u de aggregatiebewerking per kolom specificeert, de enige optie die u heeft is het gebruik van de $$ROOT telefoniste

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

Maar dat zal de output een beetje veranderen

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

Als je het originele documentformaat wilt retourneren, heb je daarna waarschijnlijk een $project-fase nodig



  1. Mongo-klassen worden niet automatisch geladen in de Yii-consoletoepassing

  2. Redis probleem met meerdere invoegingen

  3. MongoDB $substrCP

  4. Docker componeren veerboot redis verbindingsprobleem