首页/数据/NoSQL 速查/数组操作符 $push / $pull / $addToSet
本包目录(322 条)
MongoDB99 条
Elasticsearch89 条ClickHouse56 条时序与列式28 条选型与架构50 条

数组操作符 $push / $pull / $addToSet

维护数组字段:$push 追加(可配 $each/$slice/$sort)、$addToSet 去重添加、$pull 按条件移除、$pop 弹出首尾元素。

NoSQL 速查数据更新于 2026-10-12
$push追加元素,可组合 $each/$slice/$sort
$addToSet仅当元素不存在时添加
$pull移除所有匹配元素
$pop1 弹尾部,-1 弹头部

示例

示例
db.posts.updateOne({ _id: 1 }, { $push: { tags: { $each: ["mongo", "index"], $slice: -5 } } })
db.posts.updateOne({ _id: 1 }, { $addToSet: { tags: { $each: ["mongo", "db"] } } })
db.posts.updateOne({ _id: 1 }, { $pull: { tags: "draft" } })
数组长期增长会推高文档体积并拖慢更新,评论等无界列表应独立成集合。

易错点

  • $slice 为 0 表示把数组清空,负值表示从尾部保留 N 个,方向别记反

数据来源与参考

  • MongoDB Manual: Array Update Operators
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌