MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Compter les occurrences dans le document mongodb imbriqué et le groupe de conservation

Vous pouvez utiliser l'agrégation ci-dessous.

Regroupez par question et par réponse pour obtenir le nombre de combinaisons, puis groupez par question pour obtenir la réponse et son nombre.

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

Vous pouvez utiliser le code ci-dessous pour obtenir le format que vous voulez dans 3.4.

Changer $group clés dans k et v suivi de $addFields avec $arrayToObject pour transformer le tableau en paires clé-valeur nommées.

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