sql >> Databasteknik >  >> NoSQL >> MongoDB

Räkna förekomster i kapslade mongodb-dokument och lagringsgrupp

Du kan använda nedanstående aggregering.

Gruppera efter både fråga och svar för att få räkningen för kombination följt av grupp för fråga för att få svaret och dess räkning.

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

Du kan använda nedanstående kod för att få det format du vill ha i 3.4.

Ändra $group nycklar till k och v följt av $addFields med $arrayToObject för att omvandla arrayen till namngivna nyckelvärdespar.

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. Var ska jag lägga till --rest-alternativet för MongoDB?

  2. Felaktig räkning från aggregeringsfråga

  3. Hur uppdaterar man ett objekt i mongodb via mongoose?

  4. Hur använder man $add i update()-funktionen i Mongo?