数组更新操作符
数组字段更新操作
语法
{ $operator: { <field>: <value> } }说明
MongoDB 提供丰富的数组操作符用于更新文档中的数组字段。$push 追加元素,$pull 移除匹配元素,$addToSet 去重追加,$pop 移除首尾元素,$elemMatch 匹配数组中的嵌套文档。
参数
$push向数组末尾追加元素
$pull移除数组中匹配的元素
$addToSet去重追加,元素不存在才添加
$pop移除数组第一个(-1)或最后一个(1)元素
$pullAll移除数组中所有匹配值
$each配合 $push/$addToSet 批量添加
$slice配合 $push 限制数组长度
$sort配合 $push 对数组排序
$elemMatch匹配数组中嵌套文档的多条件
示例
$push 追加
向 tags 数组追加元素
db.articles.updateOne({ _id: id }, { $push: { tags: "mongodb" } })$addToSet 去重
仅当标签不存在时添加
db.articles.updateOne({ _id: id }, { $addToSet: { tags: "featured" } })$pull 移除
移除数组中特定标签
db.articles.updateOne({ _id: id }, { $pull: { tags: "deprecated" } })$push + $each + $slice
追加并保持最多 5 条最近记录
db.users.updateOne({ _id: uid }, { $push: { recentSearches: { $each: ["new"], $slice: -5 } } })$elemMatch 查询数组文档
查询至少一份成绩超过 90 分的学生
db.students.find({ scores: { $elemMatch: { subject: "math", score: { $gte: 90 } } } })