MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB група по вътрешни елементи на масива

Каква рамка използвате? Това не е обвивка на MongoDB и изглежда като някаква странна обвивка около MapReduce. В този случай $unwind няма да е наличен и ви е необходим за потребител в рамката за агрегиране. Ето какво искате в 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 } }
])

Толкова ефективно:

  1. Филтрирайте по дата, защото вече сте задали променлива за последните 7 дни
  2. Проектирайте само полето или полетата, от които се нуждаем { Нуждаем се само от едно! }
  3. Развъртете масива, така че вече имаме запис за всеки елемент от масива във всеки документ
  4. Групиране на изпълнителя от разширените документи
  5. Проектирайте във формат на документ, който можете да използвате като група, объркана с _id
  6. Сортирайте резултатите в обратен ред, за да видите първо най-маркираните

И страхотното нещо при агрегирането е, че можете постепенно да изградите тези етапи, за да видите какво се случва.

Разклатете и изпечете във вашия собствен драйвер за внедряване или ODM рамка, както е необходимо.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Задайте програмно преобразувател на MongoDb

  2. find() и findOne() методи в MongoDB, показващи различни резултати

  3. MongoDB bulkWrite()

  4. Spring Boot свързва Mysql и MongoDb

  5. Как да направя заявка NOT IN в Mongo?