MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Đếm số lần xuất hiện trong tài liệu mongodb lồng nhau và giữ nhóm

Bạn có thể sử dụng tổng hợp bên dưới.

Nhóm theo cả câu hỏi và câu trả lời để nhận số lượng cho tổ hợp, sau đó nhóm theo câu hỏi để nhận câu trả lời và số lượng của nó.

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

Bạn có thể sử dụng mã bên dưới để có được định dạng bạn muốn trong 3.4.

Thay đổi $group các khóa thành k và v theo sau là $addFields với $arrayToObject để biến đổi mảng thành các cặp giá trị khóa được đặt tên.

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. Mongoose điền mảng trả về trống

  2. Kết nối cơ sở dữ liệu động với mongodb hoặc mongoose từ nodejs

  3. Toán tử truy vấn MongoDB $ bỏ qua chỉ mục?

  4. Cách sử dụng toán tử $ in trong mongodb với hai trường trong java

  5. Tại sao trình điều khiển nút MongoDB tạo hồ sơ cá thể bị lỗi bị phá hủy?