MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Grupuj dokumenty Mongo według identyfikatora i uzyskaj najnowszy dokument według sygnatury czasowej

Jeśli robisz agregację, musisz zrobić coś podobnego do SQL , co oznacza określenie operacji agregacji na kolumnę, jedyną dostępną opcją jest użycie $$ROOT operator

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

Ale to trochę zmieni wyjście

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

Jeśli chcesz zwrócić oryginalny format dokumentu, prawdopodobnie będziesz potrzebować później etapu $project



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Rejestrowanie audytu dla MongoDB

  2. Nie można połączyć się z mongo na zdalnym serwerze

  3. Co mam wybrać:MongoDB/Cassandra/Redis/CouchDB?

  4. Aktualizacja MongoDBOne()

  5. Mongo zbiorczo znaleźć i zaktualizować pola pasujących dokumentów w jednym zapytaniu?