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

Cần tính tổng từ giá trị đối tượng mảng trong mongodb

Nó không hoạt động chính xác vì nó đang tổng hợp tất cả các tài liệu trong bộ sưu tập; bạn đang nhóm trên một hằng số "_id":"tempId" , bạn chỉ cần tham chiếu đúng khóa bằng cách thêm $ như:

db.getCollection('myCollection').aggregate([
    { "$group": {
        "_id": "$tempId",
        "totalValue": { 
            "$sum": { "$sum": "$messages.data.value" } 
        }
    } }
])

về bản chất là phiên bản đường ống một giai đoạn của hoạt động tổng hợp với một trường bổ sung chứa biểu thức tổng trước đường ống nhóm, sau đó gọi trường đó là <

      code>$sum toán tử trong nhóm.

      Ở trên hoạt động vì $ sum từ MongoDB 3.2+ có sẵn trong cả $ project $ group các giai đoạn và khi được sử dụng trong $ project giai đoạn, $ sum trả về tổng của danh sách các biểu thức. Biểu thức "$ messages.data.value" trả về danh sách các số [120, 1200] sau đó được sử dụng làm $ sum biểu thức:

      db.getCollection('myCollection').aggregate([
          { "$project": {
              "values": { "$sum": "$messages.data.value" },
              "tempId": 1,
          } },
          { "$group": {
              "_id": "$tempId",
              "totalValue": { "$sum": "$values" }
          } }
      ])
      


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bộ sưu tập bản sao Mongo và Quyền của người dùng

  2. Làm cách nào để đặt thời gian chờ cho truy vấn Mongoose?

  3. Xác suất va chạm của ObjectId và UUID trong một hệ thống phân tán lớn

  4. Làm cách nào để lưu trữ / hiển thị các đoạn văn bằng mongodb?

  5. Cách sắp xếp Tổng hợp MongoDB với đối sánh, sắp xếp và giới hạn