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

Seskupit MongoDB podle vnitřních prvků pole

Jaký framework používáte? Toto není shell MongoDB a vypadá to jako nějaký divný obal kolem MapReduce. V takovém případě by $unwind nebyl dostupný a potřebujete jej pro uživatele v agregačním rámci. Zde je to, co chcete v mongo shell:

db.articles.aggregate([
  {$match: { class_date: { $gte: date } } },
  {$project: { _id: 0, class_artist: 1 } },
  {$unwind: "$class_artist" },
  {$group: { _id: "$class_artist", tags: { $sum: 1 } }},
  {$project: { _id: 0,class_artist: "$_id", tags: 1 } },
  {$sort: { tags: -1 } }
])

Tak efektivně:

  1. Filtrujte podle data, protože jste již nastavili proměnnou za posledních 7 dní
  2. Projektujte pouze pole, která potřebujeme { Potřebujeme pouze jedno! }
  3. Rozviňte pole, takže nyní máme záznam pro každý prvek pole v každém dokumentu
  4. Seskupit umělce z rozbalených dokumentů
  5. Projektujte do formátu dokumentu, který můžete použít jako skupina s _id
  6. Seřaďte výsledky v opačném pořadí, aby se jako první zobrazily značky nahoře

A skvělá věc na agregaci je, že můžete postupně budovat tyto fáze, abyste viděli, co se děje.

Podle potřeby protřepejte a zapékejte do své vlastní implementace ovladače nebo rámce ODM.




  1. Použití MongoDB jako zdroje dat v GoLang

  2. Instalace Apache CouchDB na CentOS 8

  3. Mongo Query s Regex v Node JS fungující NA PROMĚNNÉ

  4. Vzdálenost tisku MongoDB mezi dvěma body