1.$set & $unset
说明:$set用来制定一个字段的值。如果这个字段不存在,则创建它。$unset可以把存在的键完全删除。
用法($set):1.无age字段(增加键值)
db.users.update({"name":"juan"},{$set:{"age":23}})
2.修改age字段(修改键值,可以修改其值的类型)
db.users.update({"name":"juan"},{$set:{"age":"23"}})
用法($unset):1. 删除键值
db.users.update({"name":"juan"},{$unset:{age:1}})
2.$inc
说明:$inc用来增加已有键的值,或者该键不存在那就创建一个。
注意:$inc的值必须为数字。
用法:db.users.update({"name":"juan"},{$inc:{"age":23}})
3.$push
$each:
说明:使用$each子操作符,可以通过一次$push操作添加多个值。
用法:db.users.update({"name":"juan"},{$push:{"book":{"$each":["node","express"]}}})
$slice:
说明:$slice和$push组合在一起使用,这样就可以保证数组不会超出设定好的最大长度。
注意:$slice的值必须是负整数。如果$slice的值为-10,数组的元素数量大于10,那么只有最后10个元素会保留。
用法:
db.users.update({"name":"juan"},{$push:{"book":{"$each":["express","mongo"],$slice:-10}}})
$sort:
说明:排序。
用法:db.users.update({"name":"juan"},{$push:{"like":{$each:[{"name":"node"},{"name":"mongo"}],$slice:-3,$sort:{"name":1}}}})
4.$
说明:位置或者定位操作符。
用法:1.知道修改的数组下标:
db.users.update({"name":"juan"},{"$set":{"like.0.reader":"ljj"}})
2.不知道修改的数组下标:
db.users.update({"like.reader":"juan"},{"$set":{"like.$.reader":"ljj"}})
5.$pop && $pull
说明:$pop从数组任何一端删除元素。$pull会将所有匹配的文档删除,而不是一个。
$pop用法:
1.从数组末尾删除一个:db.users.update({"name":"juan"},{"$pop":{"book":1}})
2.从数组头部删除一个:db.users.update({"name":"juan"},{"$pop":{"book":-1}})
$pull用法:
db.users.update({"name":"juan"},{"$pull":{"book":"node"}})
6.$ne & $addToSet
说明:保证数组内的元素不会重复。
$ne用法:db.users.update({"book":{"$ne":"cn"}},{$push:{"book":"cn"}})
$addToSet用法:db.users.update({"name":"juan"},{$addToSet:{"book":"express"}})
$each
说明:$sddToSet和$each组合起来,可以添加多个不同的值。
用法:db.users.update({"name":"juan"},{$addToSet:{"book":{$each:["express","node"]}}})