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

somma multipla/conteggio su mongodb (somma genere e totale tutti i risultati)

Qualcosa del genere farà il trucco:

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

Produrre dato il tuo esempio:

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

L'idea chiave è utilizzare un'espressione condizionale per mappare il sesso su 0 o 1. Dopodiché, tutto ciò di cui hai bisogno è una semplice somma su ogni campo.