sql >> Database >  >> NoSQL >> MongoDB

Hoe een ingesloten document bijwerken naar een geneste array?

Volgens uw probleembeschrijving hier:

For example I want to change the quantity of the item 10 in Invoice 123456789. Ik heb zojuist de Quantity . gewijzigd tot 3. U kunt hier alle bewerkingen uitvoeren zoals u wilt. Je hoeft alleen maar te noteren hoe ik arrayFilters heb gebruikt hier.

Probeer deze zoekopdracht:

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

De bovenstaande query is met succes uitgevoerd vanuit de mongo-shell (Mongo 3.6.3). En ik zie dit resultaat:

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

Is dat wat je wilde?




  1. MongoDB - Een document bijwerken

  2. Invoegen in mongodb met perl

  3. Hoe spring boot app redis en spring boot session global redis te isoleren

  4. Wat doe ik verkeerd met $set en $inc in update