sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur uppdaterar man ett inbäddat dokument till en kapslad array?

Enligt din problembeskrivning här:

For example I want to change the quantity of the item 10 in Invoice 123456789. Jag ändrade precis Quantity till 3. Du kan utföra valfri operation här som du vill. Du behöver bara notera hur jag använde arrayFilters här.

Testa den här frågan:

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

Ovanstående fråga exekveras framgångsrikt från mongo shell (Mongo 3.6.3). Och jag ser det här resultatet:

/* 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
            }
        ]
    }
 ]
}

Var det det du ville?




  1. Kan inte få en täckt fråga för fragmenterad samling i MongoDB

  2. Tvinga mongodb att mata ut strikt JSON

  3. Redis Cluster vs ZeroMQ i Pub/Sub, för horisontellt skalade distribuerade system

  4. Hur man projicerar arrayindex efter att ha avvecklat en array med MongoDB-aggregationsramverk