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

Множество броя с една заявка в mongodb

Можете да опитате по-долу $facet агрегиране

$count агрегирането винаги ще ви дава броя само за единично съвпадение ($match ) състояние. Така че трябва допълнително да разделите всеки брой на няколко секции и това е, което $facet осигурява чрез процеси множество конвейери за агрегация в рамките на един етап на един и същ набор от входни документи.

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] }
  }}
])

Изход

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Проактивен мониторинг на MongoDB (ъгъл на Developer Studio/Advisors)

  2. Как да изравнявам поддокумент на основно ниво в MongoDB?

  3. сортиране по дължина на низа в Mongodb/pymongo

  4. Поточно предаване на данни в реално време с потоци за промяна на MongoDB

  5. добавяне на полета created_at и updated_at към схемите на mongoose