更新 mongodb 中的数组元素

update an array element in mongodb

我正在尝试在不更改整个数组的情况下更新文档中的数组元素。

数组元素如下所示

假设我只需要更新索引 1 元素的值。为此我有:

  1. _id 文档

  2. 索引1的值("optionalImages-624476a7bd4d2bfe6bf86e9a-1-1650025533684.jpeg")

  3. 待更新值("optionalImages-624476a7bd4d2bfe6bf86e9a-1-1650025534589.jpeg").

我认为它可以由 mongodb 的 arrayfilters 更新,但我没有正确获取文档。 非常感谢您的帮助。

查询 1

  • arrayFilters 在路径中使用 $[m] 来指定我们要更改的成员值
  • m是值为20的成员,我们设置为100
    (而不是 20 和 100,输入你的“....jpg”字符串)

Playmongo

update(
{"_id": {"$eq": 1}},
{"$set": {"ar.$[m]": 100}},
{"arrayFilters": [{"m": {"$eq": 20}}])

查询 2

  • 管道更新 >= MongoDB 4.2
  • 在数组上使用映射到
  • 找到值为 20 的成员,并将其替换为 100

Playmongo

update(
{"_id": {"$eq": 1}},
[{"$set": 
   {"ar": 
     {"$map": 
       {"input": "$ar",
        "in": {"$cond": [{"$eq": ["$$this", 20]}, 100, "$$this"]}}}}}])