sql >> Database >  >> NoSQL >> MongoDB

multi sum/count op mongodb (som geslacht en totaal alle resultaten)

Zoiets zal het lukken:

db.collection.aggregate([
  {$project: {
    male: {$cond: [{$eq: ["$gender", "male"]}, 1, 0]},
    female: {$cond: [{$eq: ["$gender", "female"]}, 1, 0]},
  }},
  {$group: { _id: null, male: {$sum: "$male"},
                        female: {$sum: "$female"},
                        total: {$sum: 1},
  }},
])

Produceren gezien jouw voorbeeld:

{ "_id" : null, "male" : 2, "female" : 3, "total" : 5 }

Het belangrijkste idee is om een ​​voorwaardelijke uitdrukking te gebruiken om het geslacht toe te wijzen aan 0 of 1. Daarna is alles wat je nodig hebt een simpele som over elk veld.



  1. Rescue:Verbinding geweigerd - Kan geen verbinding maken met Redis op localhost:6379

  2. MongoDB:update elk document op één veld

  3. mongoDB/mongoose:uniek, zo niet null

  4. Belachelijk trage mongoDB-query op kleine verzameling in eenvoudige maar grote database