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

Flere tæller med enkelt forespørgsel i mongodb

Du kan prøve nedenfor $facet aggregering

$count aggregering vil altid give dig tællene for kun enkelt matching ($match ) tilstand. Så du er nødt til yderligere at opdele din hver optælling i flere sektioner, og det er hvad $facet leverer ved processer flere aggregeringspipelines inden for et enkelt trin på det samme sæt inputdokumenter.

db.collection.aggregate([
  { "$facet": {
    "Total": [
      { "$match" : { "ReleaseDate": { "$exists": true }}},
      { "$count": "Total" },
    ],
    "Released": [
      { "$match" : {"ReleaseDate": { "$exists": true, "$nin": [""] }}},
      { "$count": "Released" }
    ],
    "Unreleased": [
      { "$match" : {"ReleaseDate": { "$exists": true, "$in": [""] }}},
      { "$count": "Unreleased" }
    ]
  }},
  { "$project": {
    "Total": { "$arrayElemAt": ["$Total.Total", 0] },
    "Released": { "$arrayElemAt": ["$Released.Released", 0] },
    "Unreleased": { "$arrayElemAt": ["$Unreleased.Unreleased", 0] }
  }}
])

Output

[{
    "Total": 3,
    "Released": 2,
    "Unreleased": 1
}]


  1. Apache HBase I/O – HFile

  2. Spring Boot redisTemplate autokabelføring mislykkedes

  3. Hvordan push-meddelelser med angular.js?

  4. Redis sentinel docker billede / Dockerfile