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

Làm cách nào để tính tổng mọi trường trong một tài liệu con của MongoDB?

Bạn đã mắc phải sai lầm cổ điển là đặt tên trường tùy ý. MongoDB là "không có lược đồ", nhưng nó không có nghĩa là bạn không cần phải suy nghĩ về lược đồ của mình. Các tên khóa phải mang tính mô tả và trong trường hợp của bạn, ví dụ:"S2" không thực sự có nghĩa. Để thực hiện hầu hết các loại truy vấn và hoạt động, bạn sẽ cần thiết kế lại lược đồ để lưu trữ dữ liệu của mình như sau:

_id:...
Segment:[
    { field: "S1", value: 1 },
    { field: "S2", value: 5 },
    { field: "Sn", value: 10 },
]

Sau đó, bạn có thể chạy truy vấn của mình như:

db.collection.aggregate( [
    { $unwind: "$Segment" },
    { $group: {
        _id: '$_id', 
        sum: { $sum: '$Segment.value' } 
    } } 
] );

Kết quả sau đó dẫn đến một cái gì đó như thế này (với tài liệu duy nhất từ ​​câu hỏi của bạn):

{
    "result" : [
        {
            "_id" : ObjectId("51e4772e13573be11ac2ca6f"),
            "sum" : 16
        }
    ],
    "ok" : 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mảng truy vấn MongoDB C # của các đối tượng có chứa giá trị thuộc tính

  2. Mongodb:tại sao show dbs không hiển thị cơ sở dữ liệu của tôi?

  3. Tìm một chuỗi trong một chuỗi trong SQL

  4. Làm cách nào để kết hợp nhiều bộ sưu tập thành một bộ sưu tập bằng cách sử dụng $ lookup mongodb hoặc nodejs mongodb?

  5. Nhóm MongoDB theo giờ