更新 mongodb 中的数组元素
update an array element in mongodb
我正在尝试在不更改整个数组的情况下更新文档中的数组元素。
数组元素如下所示
假设我只需要更新索引 1
元素的值。为此我有:
_id
文档
索引1
的值("optionalImages-624476a7bd4d2bfe6bf86e9a-1-1650025533684.jpeg")
待更新值("optionalImages-624476a7bd4d2bfe6bf86e9a-1-1650025534589.jpeg").
我认为它可以由 mongodb 的 arrayfilters
更新,但我没有正确获取文档。
非常感谢您的帮助。
查询 1
- arrayFilters 在路径中使用
$[m]
来指定我们要更改的成员值
- m是值为20的成员,我们设置为100
(而不是 20 和 100,输入你的“....jpg”字符串)
update(
{"_id": {"$eq": 1}},
{"$set": {"ar.$[m]": 100}},
{"arrayFilters": [{"m": {"$eq": 20}}])
查询 2
- 管道更新 >= MongoDB 4.2
- 在数组上使用映射到
- 找到值为 20 的成员,并将其替换为 100
update(
{"_id": {"$eq": 1}},
[{"$set":
{"ar":
{"$map":
{"input": "$ar",
"in": {"$cond": [{"$eq": ["$$this", 20]}, 100, "$$this"]}}}}}])
我正在尝试在不更改整个数组的情况下更新文档中的数组元素。
数组元素如下所示
假设我只需要更新索引 1
元素的值。为此我有:
_id
文档索引
1
的值("optionalImages-624476a7bd4d2bfe6bf86e9a-1-1650025533684.jpeg")待更新值("optionalImages-624476a7bd4d2bfe6bf86e9a-1-1650025534589.jpeg").
我认为它可以由 mongodb 的 arrayfilters
更新,但我没有正确获取文档。
非常感谢您的帮助。
查询 1
- arrayFilters 在路径中使用
$[m]
来指定我们要更改的成员值 - m是值为20的成员,我们设置为100
(而不是 20 和 100,输入你的“....jpg”字符串)
update(
{"_id": {"$eq": 1}},
{"$set": {"ar.$[m]": 100}},
{"arrayFilters": [{"m": {"$eq": 20}}])
查询 2
- 管道更新 >= MongoDB 4.2
- 在数组上使用映射到
- 找到值为 20 的成员,并将其替换为 100
update(
{"_id": {"$eq": 1}},
[{"$set":
{"ar":
{"$map":
{"input": "$ar",
"in": {"$cond": [{"$eq": ["$$this", 20]}, 100, "$$this"]}}}}}])