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

Mongo agregace

Za předpokladu, že máte nainstalovanou nejnovější verzi mongodb, jeden způsob, jak to udělat, je:

  • Sort záznamy založené na published_date v sestupném pořadí.
  • group záznamy na základě jejich category . Pro každou skupinu shromážděte všechny záznamy do pole.
  • V kódu na straně javascriptu/klienta slice prvních 5 záznamů z každé skupiny (kategorie).

$slice není k dispozici na straně serveru $project operátor agregačního kanálu, který nám brání v provádění operace na straně serveru.

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 proměnná bude nyní pole dokumentů. Každý dokument představující každou category a na oplátku mít pole top 5 záznamy.



  1. Jak zkrátit číslo na 3 desetinná místa

  2. mongodump selhání 'locale::facet::_S_create_c_locale název není platný'

  3. $vyhledat více úrovní bez $unwind?

  4. Co je Hadoop Cluster? Osvědčené postupy pro vytváření klastrů Hadoop