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

MongoDB $sortByCount оператор за агрегиране

В MongoDB $sortByCount Етапът на конвейера на агрегация групира входящи документи въз основа на стойността на определен израз, след което изчислява броя на документите във всяка отделна група.

Всяка група се извежда в собствен документ, който се състои от две полета:

  • _id поле, съдържащо отделната стойност за групиране, и
  • count поле, съдържащо броя на документите, принадлежащи към тази група.

Документите са сортирани по count в низходящ ред.

Пример

Да предположим, че имаме колекция, наречена pets със следните документи:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }
{ "_id" : 8, "name" : "Tweet", "type" : "Bird", "weight" : 1 }
{ "_id" : 9, "name" : "Flutter", "type" : "Bird", "weight" : 2 }

По-долу е даден пример за заявка, която използва $sortByCount оператор.

db.pets.aggregate([ 
    { $match: {} }, 
    { $sortByCount: "$type" } 
])

Резултат:

{ "_id" : "Dog", "count" : 4 }
{ "_id" : "Cat", "count" : 2 }
{ "_id" : "Bird", "count" : 2 }
{ "_id" : "Bat", "count" : 1 }

В този пример извеждаме всеки тип домашен любимец, заедно с броя домашни любимци от всеки съответен тип.

Това е еквивалентно на следното:

db.pets.aggregate([
    {
      $match: { }
    },
    {
      $group: { _id: "$type", count: { $sum: 1 } }
    },
     { 
      $sort : { count : -1 } 
    }
])

Ето още един пример, но с добавени критерии за филтриране.

db.pets.aggregate([
    {
      $match: { weight: { $lt: 15 } }
    },
    {
      $sortByCount: "$type"
    }
])

Резултат:

{ "_id" : "Cat", "count" : 2 }
{ "_id" : "Bird", "count" : 2 }
{ "_id" : "Dog", "count" : 1 }
{ "_id" : "Bat", "count" : 1 }

Този път само едно куче е в документа, предаден на $sortByCount , тъй като първият етап на тръбопровода отстрани кучета над определено тегло. Следователно, $sortByCount просто брои числата от предоставения му документ, който включва само едно куче.

Повече информация

Вижте документацията на MongoDB за повече информация.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Уникален индекс на Mongoose на поддокумента

  2. Ръчно предоставяне на аргументи към заявка на MongoDB за поддържане на функция за съпоставяне (за индекс, нечувствителен към малки и големи букви)

  3. Как правилно да използвате повторно връзката с Mongodb в приложението и модулите на NodeJs

  4. MongoDB C# Заявка за 'Like' на низ

  5. MongoDB точка (.) в името на ключа