sql >> Database >  >> NoSQL >> MongoDB

Aantal exemplaren tellen in genest mongodb-document en groep behouden

U kunt onderstaande aggregatie gebruiken.

Groepeer op zowel vraag als antwoord om de telling voor combinatie te krijgen, gevolgd door groep voor vraag om het antwoord en het aantal te krijgen.

db.getCollection('testAggregate').aggregate([
  {"$group":{
    "_id":{"question":"$question","answer":"$answer"},
    "count":{"$sum":1}
  }},
  {"$group":{
    "_id":"$_id.question",
    "answers":{"$push":{"answer":"$_id.answer","count":"$count"}}
  }}
]);

U kunt onderstaande code gebruiken om het gewenste formaat in 3.4 te krijgen.

Wijzig $group sleutels in k en v gevolgd door $addFields met $arrayToObject om de array om te zetten in benoemde sleutelwaardeparen.

db.getCollection('testAggregate').aggregate([
  {"$group":{
    "_id":{"question":"$question","answer":"$answer"},
    "count":{"$sum":1}
  }},
  {"$group":{
    "_id":"$_id.question",
    "answers":{"$push":{"k":"$_id.answer","v":"$count"}}
  }},
 {"$addFields":{"answers":{"$arrayToObject":"$answers"}}}
]);



  1. MongoDB:Bereken de verblijfstijd tussen elke wijziging van de statuswaarde

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

  3. Waarom gebruikt MongoDB geen fsync()?

  4. Mongo $in operatorprestaties