sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan opdaterer man et indlejret dokument til et indlejret array?

I henhold til din problembeskrivelse her:

For example I want to change the quantity of the item 10 in Invoice 123456789. Jeg har lige ændret Quantity til 3. Du kan udføre alle handlinger her, som du vil. Du skal bare notere dig, hvordan jeg brugte arrayFilters her.

Prøv denne forespørgsel:

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

Ovenstående forespørgsel blev udført med succes fra mongo shell (Mongo 3.6.3). Og jeg ser dette resultat:

/* 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. pymongo.errors.CursorNotFound:markør-id '...' er ikke gyldig på serveren

  2. Hvordan opdaterer jeg delvist et objekt i MongoDB, så det nye objekt vil overlejre / flette med det eksisterende

  3. Projekter forskellige indlejrede strukturer til samme navn

  4. Flere nøgler, der peger på en enkelt værdi i Redis (Cache) med java