想要在 Mongo 中更新数组对象值的数组
Posted
技术标签:
【中文标题】想要在 Mongo 中更新数组对象值的数组【英文标题】:Want to Update Array of Array Object Value in Mongo 【发布时间】:2015-12-20 10:18:57 【问题描述】:我有以下 MongoDB 文档:
"_id": ObjectId(),
"sku": "V4696-DR-V33",
"options": [
"sku": "8903689984338",
"stores": [
"code": "AND1",
"zipcode": "110070",
"inventory": -1000
,
"code": "AND2",
"zipcode": "201010",
"inventory": -1000
,
"code": "AND3",
"zipcode": "411001",
"inventory": -1000
,
"code": "AND4",
"zipcode": " 700020",
"inventory": -1000
,
"code": "AND5",
"zipcode": "110015",
"inventory": -1000
],
"price": 2199,
"_id": ObjectId(),
"size": "14"
,
"sku": "1742564789",
"stores": [
"code": "AND1",
"zipcode": "110070",
"inventory": -1000
,
"code": "AND2",
"zipcode": "201010",
"inventory": -1000
,
"code": "AND3",
"zipcode": "411001",
"inventory": -1000
,
"code": "AND4",
"zipcode": " 700020",
"inventory": -1000
,
"code": "AND5",
"zipcode": "110015",
"inventory": -1000
],
"price": 2199,
"_id": ObjectId(),
"size": "14"
,
]
我想更新代码值为 "AND1" 的每个库存值。 我想在 mongo 查询或任何 python 脚本中查询以使用嵌套值更新整个文档。 我很纠结这个问题。
【问题讨论】:
How to change all the array elements in a mongodb document to a certain value?的可能重复 我不想 mongo 查询直接更新到我的 All Inventory 值。你有什么想法吗??? 副本显示了如何做到这一点。就是这样。。 在“option.store.code”级别的情况下,我应该怎么做?? @AsheshKhatri 你试过用find and modify吗? 【参考方案1】:尝试以下查询进行更新
db.stack.update("options.0.stores":$elemMatch:code:"AND1",$set:"options.0.stores.$.inventory":200)
为了检查,我会用图像更新....
我以你的数据为例
现在我已经使用了上面的查询 db.stack.update("options.0.stores":$elemMatch:code:"AND1",$set:"options.0.stores.$.inventory":200)
那么结果如下图所示
我已将库存更新为 200,其中代码:“AND1”
查看更改。
【讨论】:
这里我在选项中有多个数组,其中我有类似的“store.code”在这种情况下它将如何工作“options”:[“sku”:“8903689984338”,“stores” : [ "code": "AND1", "inventory": -1000 ], , "sku": "1742564789", "stores": [ "code": "AND1", "inventory": - 1000 ], , ] @AsheshKhatri 根据上述查询,所有符合条件的文档都将被更新。 正如您在问题“我想更新代码值为“AND1”的每个库存值。因此上述查询将满足语句 但是我在“options”中有多个 json 对象,那么在这种情况下我不能使用“options.0.stores”,我很挣扎!!你还有其他方法可以解决这个问题吗?? 你能给出你收藏的整个结构吗?如果我知道集合结构,我可以提供帮助以上是关于想要在 Mongo 中更新数组对象值的数组的主要内容,如果未能解决你的问题,请参考以下文章