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

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

В MongoDB $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 }

Можем да използваме следната операция за агрегиране, за да преброим броя на кучетата в колекцията:

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

Резултат:

{ "DogCount" : 4 }

Начинът, по който работи тръбопроводът за агрегиране е, че се състои от етапи. Всеки етап на тръбопровода предоставя вход за следващия етап.

Следователно, в горния пример, първият етап филтрира колекцията до само онези документи, които имат type на dog . Вторият етап взе тези документи, преброи ги и предаде резултата на следващия етап. Като се има предвид, че това беше последният етап в тръбопровода, видяхме изхода.

Преброяване на групирани документи

Ето пример, който комбинира оператора за обобщение $group с $count, за да върне броя на всеки тип домашен любимец под определено тегло.

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

Резултат:

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

Добавяне на етап на конвейер

В този пример добавяме етап на конвейер, за да сортираме резултатите. По-специално, ние използваме $sort оператор, за да направи това.

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

Резултат:

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

В този случай ние сортирахме по броя в низходящ ред (-1 определя низходящ ред), след това от _id във възходящ ред (1 определя възходящ ред).

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

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB Aggregation:Преброяване на отделни полета

  2. Грешка:документът за операция за актуализиране трябва да съдържа атомарни оператори, когато се изпълнява updateOne

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

  4. Управление на множество технологии за бази данни с ClusterControl

  5. Как мога да заредя данни от колекция mongodb в DataFrame на pandas?