MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Vorkommen in verschachtelten Mongodb-Dokumenten und Aufbewahrungsgruppen zählen

Sie können die folgende Aggregation verwenden.

Gruppieren Sie nach Frage und Antwort, um die Anzahl der Kombinationen zu erhalten, gefolgt von Gruppieren nach Frage, um die Antwort und deren Anzahl zu erhalten.

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

Sie können den folgenden Code verwenden, um das gewünschte Format in 3.4 zu erhalten.

Ändern Sie $group Schlüssel in k und v gefolgt von $addFields mit $arrayToObject um das Array in benannte Schlüsselwertpaare umzuwandeln.

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