sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDB $count Aggregation Operator

I MongoDB er $count aggregeringsoperatør sender et dokument til det næste trin i aggregeringspipelinen, der indeholder en optælling af antallet af dokumenter, der er input til det aktuelle trin.

Eksempel

Antag, at vi har en samling kaldet pets med følgende dokumenter:

{ "_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 }

Vi kan bruge følgende aggregeringsoperation til at tælle antallet af hunde i samlingen:

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

Resultat:

{ "DogCount" : 4 }

Den måde, aggregeringspipelinen fungerer på, er, at den består af faser. Hvert pipelinetrin giver input til det næste trin.

I ovenstående eksempel filtrerede den første fase derfor samlingen ned til kun de dokumenter, der havde en type af dog . Anden fase tog disse dokumenter, talte dem og sendte resultatet videre til næste fase. Da det var den sidste fase i pipelinen, så vi outputtet.

Tæller grupperede dokumenter

Her er et eksempel, der kombinerer $group aggregatoperatøren med $count for at returnere en optælling af hver type kæledyr under en bestemt vægt.

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

Resultat:

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

Tilføj en Pipeline Stage

I dette eksempel tilføjer vi en pipeline-fase for at sortere resultaterne. Vi bruger især $sort operatør til at gøre dette.

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

Resultat:

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

I dette tilfælde sorterede vi efter antallet i faldende rækkefølge (-1 angiver faldende rækkefølge), derefter ved _id i stigende rækkefølge (1 angiver stigende rækkefølge).

Flere oplysninger

Se MongoDB-dokumentationen for mere information.


  1. Sådan konfigureres Redis i brugerdefineret navneområde som cache og MQ på ServiceStack-webapplikation ved hjælp af Structuremap

  2. Sådan indlæses en hash sikkert og konverterer en værdi til en boolean, hvis den findes

  3. MongoDB $millisekund

  4. Mongodb $hvor forespørgsel altid er sand med nodejs