【问题标题】:Want to Update Array of Array Object Value in Mongo想要在 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 脚本中查询以使用嵌套值更新整个文档。 我很纠结这个问题。

【问题讨论】:

标签: mongodb multidimensional-array mongoose mongodb-query pymongo


【解决方案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”,我很挣扎!!你还有其他方法可以解决这个问题吗??
  • 你能给出你收藏的整个结构吗?如果我知道集合结构,我可以提供帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 2015-05-05
  • 1970-01-01
  • 1970-01-01
  • 2021-07-08
  • 1970-01-01
  • 2023-04-07
相关资源
最近更新 更多