下面介绍几个修改器
修改器都是以 $ 开头的
$inc//增长, increment 缩写 ,可以为负数,但必须是数字类型
$set//指定一个键值,如果存在,就修改原来的value不存在就添加,
例:
db.user.update(...,{"$set" : {"hoby" : "basketball"}})
$unset//删除指定键,例:db.user.update(...,{"$unset" : {"hoby" : 1}}),经测试,键后面的参数无论跟什么值,结果都是删除键,具体什么区别未知。
$push//数组修改器,向数组内追加文档,用法同上
$ne// not equals 缩写(个人认为),不等于,
例:
> db.user.update(
... {"comments":{"$ne" : "zhangsan"}},
... {$push:{"comments":"zhangsan"}})
如果 comments 中没有 "zhangsan" 值,就添加
复杂一点的例子:
> db.user.update(
... {"comments":{"$ne" : {"pom":"zhangsan"}}},
... {$push:{"comments":{"pom":"zhangsan"}}})
如果 comments 数组中 没有 "pom" 为 "zhangsan" 的,就将该文档添加。
$addToSet//与上面的功能一样,它本身就有防止重复数据的功能,注意大小写,如果不对,会出现
Invalid modifier specified $addToset的错误提示
例:
> db.user.update(
... {"name":"zhangshan"},
... {"$addToSet":{"comments":"zhangsan"}})
$each//与 $addToSet 结合起来,可以一次添加多个值
例:
> db.user.update(
... { "_id" : ObjectId("50beee03bda33240a8297381")},
... {"$addToSet":
... {"comments" : { "$each":[
... {"user":"lisi"},{"user":"wangwu"}
... ]}}})
$pop//从数组的头部或者尾部移除元素 1:尾部,-1:头部
例:
> db.user.update(
... {"_id" : ObjectId("50beee03bda33240a8297381")},
... {$pop:{"comments":1}})
$pull// 移除特定元素,注意,会将所有匹配的元素都删除掉
例:
> db.user.update(
... {"_id" : ObjectId("50beee03bda33240a8297381")},
... {$pull:{"comments":{"people":"nihao"}}})
$ //只有一个 "$",数组的定位修改器,也就相当于将 第一个参数查找到的元素的下表 付给了 “$” 符号
例子:
> db.user.update(
... {"comments.pom":"zhangsan"},
... {$set:{"comments.$.pom":"zhangsan23"}})