$pop
定义
行为
从MongoDB 5.0开始,更新运算符按字典顺序处理以字符串命名的字段。具有数字名称的字段按数字顺序处理。有关详细信息,请参阅更新运算符行为。
如果<field>
不是数组,则$pop
操作失败。
如果$pop
运算符从<field>
中删除最后一个项目,则<field>
将保留一个空数组。
从MongoDB 5.0开始,当使用像$pop
这样的更新操作符与一个空的运算表达式({}
)时,mongod
不再引发错误。一个空的更新不会产生任何变化,也不会创建任何操作日志条目(这意味着该操作是一个无操作)。
示例
移除数组的第一个元素
创建students
集合
db.students.insertOne( { _id: 1, scores: [ 8, 9, 10 ] } )
以下示例从scores
数组中移除了第一个元素,8
db.students.updateOne( { _id: 1 }, { $pop: { scores: -1 } } )
scores
数组中的第一个元素,8,已被移除
{ _id: 1, scores: [ 9, 10 ] }
移除数组的最后一个元素
将以下文档添加到students
集合中
db.students.insertOne( { _id: 10, scores: [ 9, 10 ] } )
以下示例通过在$pop
表达式中指定1
,从scores
数组中移除了最后一个元素,10
db.students.updateOne( { _id: 10 }, { $pop: { scores: 1 } } )
已从 scores
数组中移除最后一个元素 10
{ _id: 10, scores: [ 9 ] }