$position(指定插入位置)
最后更新:2026-10-09
$position(指定插入位置)
$position 指定 $push 插入元素的位置。`{ $push: { items: { $each: ['x'], $position: 0 } } }` 在数组开头插入。位置从 0 开始计数;负数从末尾计数(-1 表示插到最后一个元素之前)。必须与 $each 一起用于 $push,可配合 $slice 限制数组长度。
| 分类 | 更新修饰器 |
|---|---|
| MongoDB 版本 | 2.6+ |
| 示例语言 | mongosh (Shell) |
📝 语法
{ $push: { <数组字段>: { $each: [ <值> ], $position: <位置> } } }
⚙️ 参数
| 数组字段 | 要插入元素的数组字段名。 |
|---|---|
| 位置 | 插入索引,从 0 开始;负数从末尾倒数。 |
返回值:更新结果文档
▶ 示例
请在本地安装的 mongosh 中执行以下命令(需已启动 mongod):
// $position:把元素插到数组开头
// 位置从 0 开始
db.tasks.updateOne(
{ _id: 1 },
{ $push: { queue: { $each: ['urgent'], $position: 0 } } }
)
// 负数:插到最后一个元素之前
db.tasks.updateOne(
{ _id: 1 },
{ $push: { queue: { $each: ['normal'], $position: -1 } } }
)
运行结果:
// urgent 被插入队首;normal 插入到最后一个元素之前
📌 注意事项
- 必须与 $each 配合使用
- 位置从 0 开始,负数从末尾倒数
- 配合 $slice 可控制数组最大长度
🏷️ 相关标签
💡 相关案例
📚 相关教程
❓ 常见问题
Q$position 必须配 $each 吗?
A是,$position 只能在 $push 内与 $each 一起使用。
Q$position: 0 是什么意思?
A插入到数组开头(索引 0)。
Q$position 支持负数吗?
A支持,-1 表示插入到最后一个元素之前。