$[](更新全部数组元素)

最后更新:2026-10-09

$[](更新全部数组元素)

$[] 位置操作符更新数组中所有元素。`{ $set: { 'grades.$[]': 90 } }` 把所有成绩改为 90。配合 arrayFilters 时更新满足条件的元素;不带 arrayFilters 时更新全部元素。$[] 不能出现在查询条件中(查询用 $elemMatch),只用于更新语句。

分类更新修饰器
MongoDB 版本3.6+
示例语言mongosh (Shell)

📝 语法

{ <更新操作符>: { '<数组字段>.$[]': <值> } }

⚙️ 参数

数组字段要整体更新的数组字段名。
值应用到每个元素的新值。

返回值:更新结果文档

▶ 示例

请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):

// $[]:把所有成绩改为 90
db.students.updateOne(
  { _id: 1 },
  { $set: { 'grades.$[]': 90 } }
)

// 嵌套数组也用 $[]
// 逐层标记即可
db.students.updateOne(
  { _id: 1 },
  { $set: { 'scores.$[].math': 100 } }
)

运行结果:

// grades 全部变为 90;第二个示例把每个 score 对象的 math 设为 100

📌 注意事项

📚 相关教程

❓ 常见问题

Q$[] 和 $ 有什么区别?
A$ 只更新第一个匹配元素;$[] 更新所有元素。
Q$[] 能配合条件吗?
A条件筛选需用 $[标识符](配合 arrayFilters);$[] 是无条件全部更新。
Q$[] 能用于查询吗?
A不能,只用于更新语句。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏