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

Conta le occorrenze nel documento mongodb nidificato e mantenendo il gruppo

Puoi utilizzare l'aggregazione di seguito.

Raggruppa per domanda e risposta per ottenere il conteggio per la combinazione, seguito da raggruppa per domanda per ottenere la risposta e il relativo conteggio.

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

Puoi utilizzare il codice seguente per ottenere il formato desiderato in 3.4.

Cambia $group chiavi in ​​k e v seguite da $addFields con $arrayToObject per trasformare l'array in coppie di valori chiave con nome.

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