修改器 $inc
用来增加已有键的值,或者 键不存在时 创建键。
它 用来 专门 增加(或减少)数字的。
$inc 只能用于 整数 、 长整数 或 双精度浮点数 , 修改其他类型 会失败报错,即使其他多种语言中能自动转换的类型 (如:null , 布尔 或 数字构成字符串),都是不行的。 报错字符串 如下:
Modifier " $inc " allowed for numbers only
比如我们要统计某个网站的访问量
网站 访问量目前是 52 个。
> url = { " url " : " www.hao123.com " , " pageviews " : 52 } { " url " : " www.hao123.com ", " pageviews " : 52 } > db.analytics.insert(url) > db.analytics.find() { " _id " : ObjectId( " 4fde916989834bfb0bd267a7 "), " url " : " www.hao123.com ", " pageviews " : 52 }
这时候 有一个访问来了 用 $inc 自增修改器
> db.analytics.update({ " url " : " www.hao123.com "}, ... { " $inc " : { " pageviews ":1} } ) > db.analytics.find() { " _id " : ObjectId( " 4fde916989834bfb0bd267a7 "), " url " : " www.hao123.com ", " pageviews " : 53 }
看到变成了 53 个,这时发现 有两个的 是自己的测试访问次数 ,想减掉 $inc 自增修改器 可以支持 负数 。
> db.analytics.update({ " url " : " www.hao123.com "}, ... { " $inc ":{ " pageviews ":-2}}) > db.analytics.find() { " _id " : ObjectId( " 4fde916989834bfb0bd267a7 "), " url " : " www.hao123.com ", " pageviews " : 51 }
看修改好了 变成 51了。
使用修改器 注意点 :
1. "_id" 不能修改。 (整文档更新 是可以修改 "_id" 键的)
2. 其他键 包含 唯一索引键 都是可以修改的。