更新 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。
您需要使用位置运算符
db.collection.update({
"instock.warehouse": "C",
"item": "journal"
},
{
$set: {
"instock.$.qty": 10
}
})
我有一个来自 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。
您需要使用位置运算符
db.collection.update({
"instock.warehouse": "C",
"item": "journal"
},
{
$set: {
"instock.$.qty": 10
}
})