更新 Mongodb 中唯一的嵌套数组元素

Update unique nested array element in Mongodb

我有一个来自 official documentation page 的非常简单的例子:

数据:

   { item: "journal", instock: [ { warehouse: "A", qty: 5 }, { warehouse: "C", qty: 15 } ] },
   { item: "notebook", instock: [ { warehouse: "C", qty: 5 } ] },
   { item: "paper", instock: [ { warehouse: "A", qty: 60 }, { warehouse: "B", qty: 15 } ] }

我想更新数量,其中item = "journal" and warehouse = "A"[=32] =].

项目始终是唯一的,仓库在数组元素内始终是唯一的。

例如,我试过这样的查询:

collection.updateOne(
"{ \"item\": \"" + item + "\", \"instock.warehouse\": \"" + warehouse + "\" } } }", // find
"{ $set: { quantity: \"" + quantity + "\" } }" // update
)

问题始终是查询,例如这个查询 returns 所有元素...我尝试了大约 100 个不同的其他元素,但没有任何效果。

我现在正在使用来自 flapdoodle 的嵌入式数据库进行测试,版本 3_4。

您需要使用位置运算符

Playground

db.collection.update({
"instock.warehouse": "C",
  "item": "journal"
},
{
  $set: {
    "instock.$.qty": 10
  }
})