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

Tổng giá trị từ tất cả các khóa trong tài liệu phụ

Không có cách nào trong khung tổng hợp mongodb để xử lý khóa bên trong tài liệu là dữ liệu mà bạn có thể kiểm tra hoặc thao tác. Giải pháp thay thế là biến những gì bạn đang sử dụng làm khóa ở đây (ví dụ:tên cửa hàng loại trái cây) thành các giá trị như sau:

{
    "_id" : "doc1",
    "stores":[
        {
            // store name is a value
            "name":"store_A",
            "inventory": [
            {
                // so is fruit type
                "type" : "apple",
                "count" : 50
            },
            {
                "type" : "orange",
                "count" : 20
            }
            ]
        },
        {
            "name": "store_B",
            "inventory": [
            {
                "type" : "orange",
                "count" : 15
            }
            ]
        }
    ]
}

Điều này cho phép bạn làm việc với những dữ liệu này dễ dàng hơn trong việc tổng hợp:

db.coll.aggregate([
    // split documents by store name
    {$unwind:"$stores"},
    // split documents further by fruit type
    {$unwind:"$stores.inventory"},
    // group documents together by store/fruit type, count quantities of fruit
    {$group:{"_id":{"store":"$stores.name", "fruit":"$stores.inventory.type"},
             "count":{$sum:"$stores.inventory.count"}}},
    // reformat the data to look more like your specification
    {$project:{
        "store":"$_id.store",
        "fruit":"$_id.fruit",
        "_id":0,
        "count":1}}])

Đầu ra giống như sau:

{
    "result" : [
        {
            "count" : 15,
            "store" : "store_B",
            "fruit" : "apple"
        },
        {
            "count" : 15,
            "store" : "store_B",
            "fruit" : "orange"
        },
        {
            "count" : 30,
            "store" : "store_A",
            "fruit" : "orange"
        },
        {
            "count" : 50,
            "store" : "store_A",
            "fruit" : "apple"
        }
    ],
    "ok" : 1
}



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:$ push một biểu thức tính toán trong một nhóm $

  2. Làm cách nào để sử dụng GraphQL với Mongoose và MongoDB mà không cần tạo mô hình Mongoose

  3. Mongodb Aggregation:Cách chỉ trả về các phần tử phù hợp của một mảng

  4. Tôi muốn chuyển hướng đến các trang khác nhau dựa trên một số điều kiện

  5. Xác thực MongoDB không được bật trên Máy chủ Linux