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

Làm cách nào để cập nhật một tài liệu nhúng vào một mảng lồng nhau?

Theo mô tả vấn đề của bạn ở đây:

For example I want to change the quantity of the item 10 in Invoice 123456789. Tôi vừa thay đổi Quantity đến 3. Bạn có thể thực hiện bất kỳ thao tác nào ở đây nếu bạn muốn. Bạn chỉ cần lưu ý cách tôi đã sử dụng arrayFilters nơi đây.

Hãy thử truy vấn này:

db.collection.update(
 {"_id" : "12345678"},
 {$set:{"Invoices.$[element1].Items.$[element2].Quantity":3}},
 {multi:true, arrayFilters:[ {"element1._id": "123456789"},{ 
  "element2.Item": { $eq: 10 }} ]}
)

Truy vấn trên được thực thi thành công từ Mongo shell (Mongo 3.6.3). Và tôi thấy kết quả này:

/* 1 */
{
"_id" : "12345678",
"Invoices" : [ 
    {
        "_id" : "123456789",
        "Currency" : "EUR",
        "DueTotalAmountInvoice" : 768.37,
        "InvoiceDate" : "2016-01-01 00:00:00.000",
        "Items" : [ 
            {
                "Item" : 10,
                "ProductCode" : "ABC567",
                "Quantity" : 3.0
            }, 
            {
                "Item" : 20,
                "ProductCode" : "CDE987",
                "Quantity" : 1
            }
        ]
    }, 
    {
        "_id" : "87654321",
        "Currency" : "EUR",
        "DueTotalAmountInvoice" : 768.37,
        "InvoiceDate" : "2016-01-01 00:00:00.000",
        "Items" : [ 
            {
                "Item" : 30,
                "ProductCode" : "PLO987",
                "Quantity" : 1,
                "Units" : "KM3"
            }, 
            {
                "Item" : 40,
                "ProductCode" : "PLS567",
                "Quantity" : 1,
                "DueTotalAmountInvoice" : 768.37
            }
        ]
    }
 ]
}

Là những gì bạn muốn?




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Khi nào đóng kết nối cơ sở dữ liệu MongoDB trong Nodejs

  2. Triển khai ứng dụng nodejs cho nền tảng đám mây của Google

  3. MongoDB:kết nối với ứng dụng ASP.NET MVC

  4. Làm cách nào để xóa cảnh báo không dùng nữa này trong MongoDB và tại sao nó lại xảy ra?

  5. Mongoose, Chọn một trường cụ thể với tìm