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

Truy vấn chuyển một mảng thành bản đồ tài liệu có n thuộc tính

Từ MongoDB 3.4.4 trở lên, bạn có thể sử dụng $arrayToObject toán tử chuyển một mảng thành một tài liệu duy nhất và mảng phải là một danh sách các tài liệu chứa hai trường, k v ở đâu:

Vì vậy, bạn sẽ cần tạo một đường dẫn để chuyển đổi items trước tiên mảng từ

"items":[  
    {  
      "id":"AB-02",
      "qty":2
    },
    {  
      "id":"AB-03",
      "qty":0
    },
    {  
      "id":"AB-03",
      "qty":9
    }
]

đến

"items" : [ 
    {
        "k" : "AB-02",
        "v" : {
            "id" : "AB-02",
            "qty" : 2.0
        }
    }, 
    {
        "k" : "AB-03",
        "v" : {
            "id" : "AB-03",
            "qty" : 0.0
        }
    }, 
    {
        "k" : "AB-03",
        "v" : {
            "id" : "AB-03",
            "qty" : 9.0
        }
    }
]

$map thực hiện điều đó một cách chính xác với biểu thức

"$map": {
    "input": "$items",
    "as": "item",
    "in": {
        "k": "$$item.id",
        "v": "$$item"
    }                            
}

Vì vậy, đường dẫn cuối cùng của bạn có thể bao gồm tất cả các toán tử ở trên vào một giai đoạn duy nhất với $addFields như:

db.collection.aggregate([
    {
        "$addFields": {
            "items": {
                "$arrayToObject": {
                    "$map": {
                        "input": "$items",
                        "as": "item",
                        "in": {
                            "k": "$$item.id",
                            "v": "$$item"
                        }                            
                    }
                }
            }
        }
    }
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để liệt kê tất cả cơ sở dữ liệu MongoDB trong Node.js?

  2. MongoDB:Chèn hàng loạt (Bulk.insert) so với chèn nhiều (chèn ([...]))

  3. Các ràng buộc duy nhất của MongoDb trên Phạm vi ngày

  4. Làm cách nào để bạn thực hiện tìm kiếm (id:{$ in:[list]}) bằng ứng dụng khách vertx-mongo

  5. Tìm và thay thế các chuỗi trong tài liệu một cách hiệu quả