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

Agregacja Mongo

Zakładając, że masz zainstalowaną najnowszą wersję mongodb, jednym ze sposobów na zrobienie tego jest:

  • Sort rekordy na podstawie published_date w porządku malejącym.
  • group rekordy na podstawie ich category . Dla każdej grupy zbierz wszystkie rekordy razem w tablicy.
  • W kodzie javascript/po stronie klienta slice 5 najlepszych rekordów z każdej grupy (kategorii).

$slice nie jest dostępny po stronie serwera $project operator potoku agregacji, który uniemożliwia nam wykonanie operacji po stronie serwera.

var result = db.collection.aggregate(
[
{$sort:{"published_date":-1}},
{$group:{"_id":"$category","values":{$push:"$$ROOT"}}}
]
).map(function(doc){
return {"category":doc._id,"records":doc.values.slice(0,5)};
});

result zmienna będzie teraz tablicą dokumentów. Każdy dokument reprezentujący każdą category i z kolei mając tablicę najlepszych 5 rekordy.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zwróć ostatnią prawdziwą wartość dla każdej grupy

  2. Jak działa sortowanie z indeksem w MongoDB?

  3. Dlaczego zestaw replik mongodb wymaga nieparzystej liczby węzłów głosujących?

  4. Wiosenne buty z MongoTemplate

  5. 3 sposoby na wybranie wiersza z maksymalną wartością w SQL