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

Tính tổng tất cả các giá trị của các trường tài liệu được đặt tên giống nhau trong một bộ sưu tập

Bạn có thể tận dụng $ objectToArray $ arrayToObject các toán tử để đọc động các khóa đối tượng của bạn. Để loại bỏ _idname các trường bạn có thể $ filter bởi $ type .

db.collection.aggregate([
    {
        $project: {
            _id: 0,
            fields: {
                $filter: {
                    input: { $objectToArray: "$$ROOT" },
                    cond: { $eq: [ { $type: "$$this.v" }, "double" ] }
                }
            }
        }
    },
    {
        $unwind: "$fields"
    },
    {
        $group: {
            _id: "$fields.k",
            total: { $sum: "$fields.v" }
        }
    },
    {
        $group: {
            _id: null,
            aggregates: { $push: { k: "$_id", v: "$total" } }
        }
    },
    {
        $replaceRoot: {
            newRoot: { $arrayToObject: "$aggregates" }
        }
    }
])

Sân chơi Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sử dụng Hibernate OGM với đám mây MongoDB Atlas M0 (Bậc miễn phí)

  2. nhóm theo ngày trong truy vấn mogodb mà không cần xem xét thời gian

  3. Meteor, One to Many Relationship &chỉ thêm trường vào bộ sưu tập phía máy khách trong Xuất bản?

  4. làm cách nào để đếm $ lookup field trong mongo db?

  5. Cuộc chiến của các cơ sở dữ liệu NoSQL - So sánh MongoDB và CouchDB