pageViews":10000}}
)
使用"$inc"给键pageViews,再减少10000
db.users.update(
{"url":"http://www.cnblogs.com/refactor"},
{"$inc":{"pageViews":-10000}}
) www.2cto.com
"$inc"和"$set"用法相似,用来增加或减少数字."$inc"只能用于整数,长整数或双精度浮点数.
虽然很多语言能将 null,bool,有数字构成的字符串 转化成 数字,但使用"$inc"仍会报错:
"$inc"键的值也必须为数字.
数组修改器
"$push"和"$pop"只能用于数组.
如果指定的键已存在,"$push"会向已有的数组末尾加入一个元素,如果键不存在,就创建一个新数组.
如:
db.blog.insert(
{
"title":"refactor's blog",
"Content":"refactor's blog test",
"author":
{
"name":"refactor",
"email":"295240648@163.com"
}
}
)
向以上文档中,添加一个包含一个数组的"comment"键,还向 comment 数组push一个评论.
这个数组会自动创建,并加入评论:
db.blog.update(
{"title":"refactor's blog"},
{
$push:
{
"comments":
{
"name":"refactor2",
"content":"nice"
}
}
}
)
还想添加一条评论:
db.blog.update(
{"title":"refactor's blog"},
{ www.2cto.com
$push:
{
"comments":
{
"name":"refactor3",
"content":"good"
}
}
}
)
如果一个值不在数组里就把它加进去.可以在查询文档时使用"$ne".
使用"$addToSet"
db.users.insert(
{
"userName":"refactor",
"emails":
[
"295240648@163.com",
"295240648@126.com"
]
}
)
向emails添加新地址,用"$addToSet"避免重复
db.users.update(
{"userName":"refactor"},
{
"$addToSet":
{
"emails":"295240648@163.com"
}
}
)
这样"295240648@163.com" 不会插入到emails中
db.users.update( www.2cto.com
{"userName":"refactor"},
{
"$addToSet":
{
"emails":"295240648@qq.com"
}
}
)
这样"295240648@qq.com" 会插入到emails中
将"$addToSet"和"$each"一起使用,可以添加不同的值.
db.users.update(
{"userName":"refactor"},
{
"$addToSet":
{
"emails":
{
"$each":
[
"295240648@111.com",
"295240648@112.com",
"295240648@113.com"
]
}
}
}
)
www.2cto.com
使用"$pop",可以从数组任何一端删除元素.
{$pop:{key:1}}从数组末尾删除一个元素
{$pop:{key:-1}}从数组头部删除一个元素
使用"$pull",可以根据特定条件删除元素,也可以根据位置删除元素
db.users.update(
{"userName":"refactor"},
{
"$pull":
{
"emails":"295240648@111.com"
}
}
)
"$pull"会将所有匹配的部分删掉,对于数组[1,1,2,1]执行pull 1,得到的结果数组是[2]
作者 refactor