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

multi sum/count on mongodb (sum køn og total alle resultater)

Sådan noget vil gøre tricket:

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

Producerer givet dit eksempel:

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

Nøgleideen er at bruge et betinget udtryk at kortlægge kønnet til 0 eller 1. Derefter behøver du kun en simpel sum over hvert felt.



  1. kan ikke lave grundlæggende mongo shell script med godkendelse

  2. spring data mongodb kortlægning dynamisk felt

  3. mongodb java driver - rå kommando?

  4. Har MongoDBs $in-klausul nogen maks. grænse i antal argumenter