sql >> データベース >  >> NoSQL >> MongoDB

埋め込まれたドキュメントをネストされた配列に更新するにはどうすればよいですか?

    ここでの問題の説明に従って:

    For example I want to change the quantity of the item 10 in Invoice 123456789. Quantityを変更しました 〜3。ここで必要に応じて任意の操作を実行できます。 arrayFiltersの使用方法に注意する必要があります ここ。

    このクエリを試してください:

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

    上記のクエリは、mongoシェル(Mongo 3.6.3)から正常に実行されました。そして、私はこの結果を見ます:

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

    それはあなたが望んでいたことですか?




    1. nodejsからmongodbまたはmongooseへの動的データベース接続

    2. mongoosenodejsを使用したFltermongodbデータベース

    3. 現在と特定の日付の違い

    4. mongodbクエリ:一意のエントリを取得する方法