$push(追加元素)
最后更新:2026-10-09
$push(追加元素)
$push 向数组末尾追加一个或多个元素。`{ $push: { items: 'pen' } }`;一次多个需配合 $each。可组合 $position(插入位置)、$slice(长度限制)、$sort(排序)实现更复杂的数组维护。是数组更新中使用频率最高的操作符。
| 分类 | 更新数组 |
|---|---|
| MongoDB 版本 | 1.0+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $push: { <数组字段>: <值> } }
⚙️ 参数
| 数组字段 | 要追加元素的数组字段名。 |
|---|---|
| 值 | 要追加的值或 { $each: [...] } 形式。 |
返回值:更新结果文档
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $push:向数组追加元素
// 可重复追加,不去重
db.carts.updateOne(
{ _id: 1 },
{ $push: { items: 'pen' } }
)
// 批量追加
// 需 $each 包装
db.carts.updateOne(
{ _id: 1 },
{ $push: { items: { $each: ['book', 'ruler'] } } }
)
运行结果:
// items 追加 pen;第二次追加 book 与 ruler,允许重复
📌 注意事项
- 默认追加到末尾,去重用 $addToSet
- 批量追加必须 $each
- 配合 $position/$slice/$sort 可控制位置与长度
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$push 和 $addToSet 的区别?
A$push 允许重复直接追加;$addToSet 去重后才添加。
Q$push 能插入到指定位置吗?
A能,配合 $position 指定索引。
Q$push 能限制数组长度吗?
A能,配合 $slice 截断,如只保留最近 10 条。