MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Преброяване на срещания във вложен mongodb документ и поддържаща група

Можете да използвате агрегирането по-долу.

Групирайте както по въпрос, така и по отговор, за да получите броя на комбинацията, последвано от група по въпрос, за да получите отговора и неговия брой.

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

Можете да използвате кода по-долу, за да получите желания от вас формат в 3.4.

Променете $group ключове в k и v, последвани от $addFields с $arrayToObject за трансформиране на масива в именувани двойки ключ-стойност.

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Мониторинг на производителността и здравето на ClusterControl

  2. Node.js Mongoose .update с ArrayFilters

  3. Как мога да изпълнявам команди на MongoDB чрез запитване до специалната колекция $cmd?

  4. Актуализиране на свойството на вграден документ в Mongodb

  5. Как да разрешите com.mongodb.spark.exceptions.MongoTypeConversionException:Не може да прехвърля... Java Spark