举例:
假设现有文档: { _id: 1, letters: ["a", "b"] } 执行:db.test.update({_id:1},{$addToSet:{letters:"c"}}) 结果:{ "_id" : 1, "letters" : [ "a", "b", "c" ] } 执行:db.test.update({_id:1},{$addToSet:{letters:["d","e"]}}) 结果:{ "_id" : 1, "letters" : [ "a", "b", "c", [ "d", "e" ] ] } 注意,若想让添加的多个元素分开成单个元素的效果,请参考$each的使用方法 $pop语法:{ $pop: { : <-1 | 1>, ... } }
释义:删除数组中的第一个或最后一个元素,-1表示第一个,没错,第一个;1表示最后一个!
举例:
db.test.update({_id:1},{$pop:{letters:-1}}); $pullAll语法:{ $pullAll: { : [ , ... ], ... } }
释义:删除数组或内嵌文档字段中所有指定的元素
举例:
假设现有文档:{ _id: 1, scores: [ 0, 2, 5, 5, 1, 0 ] } 执行:db.test.update( { _id: 1 }, { $pullAll: { scores: [ 0, 5 ] } } ) 结果:{ "_id" : 1, "scores" : [ 2, 1 ] } $pull语法:{ $pull: { : <value|condition>, : <value|condition>, ... } }
释义:删除满足条件的元素
举例:
假设现有文档:{ _id: 1, votes: [ 3, 5, 6, 7, 7, 8 ] } 执行:db.test.update( { _id: 1 }, { $pull: { votes: { $gte: 6 } } } ) 结果:{ _id: 1, votes: [ 3, 5 ] } $push语法:{ $push: { : , ... } }
释义:往数组中追加指定的元素,若文档中数组不存在,则创建并添加指定元素,自v2.4起,添加了对$.each的支持
举例:
db.students.update( { _id: 1 }, { $push: { scores: 89 } }) $each语法:
{ $addToSet: { <field>: { $each: [ <value1>, <value2> ... ] } } } { $push: { <field>: { $each: [ <value1>, <value2> ... ] } } }释义:需要搭配\(addToSet或\)push方可使用
$sort语法:
{ $push: { <field>: { $each: [ <value1>, <value2>, ... ], $sort: <sort specification> } } }释义:自v2.4加,配合$push使用,表示给文档中的指定数组元素排序,1是升序,-1是降序
举例:
db.students.update( { _id: 1 }, { $push: { quizzes: { $each: [ { id: 3, score: 8 }, { id: 4, score: 7 }, { id: 5, score: 6 } ], $sort: { score: 1 } } } } ) $position语法:
{ $push: { <field>: { $each: [ <value1>, <value2>, ... ], $position: <num> } } }释义:自v2.6加,配合$push使用表示往数组元素中的指定位置插入元素