一、批量更新
默认只对符合条件的一条文档更新
1
2
3
4
5
6
7
8
|
> db.post.
find
()
{
"_id"
: ObjectId(
"54a530c3ff0df3732bac1681"
),
"id"
: 2,
"name"
:
"joe"
,
"age"
: 49 }
{
"_id"
: ObjectId(
"54a530c3ff0df3732bac1680"
),
"id"
: 1,
"name"
:
"joe"
,
"age"
: 21,
"comments"
: [
"test2"
,
"test9"
,
"test5"
] }
> db.post.update({
"name"
:
"joe"
}, {$
set
:{
"age"
:70}})
WriteResult({
"nMatched"
: 1,
"nUpserted"
: 0,
"nModified"
: 1 })
> db.post.
find
()
{
"_id"
: ObjectId(
"54a530c3ff0df3732bac1681"
),
"id"
: 2,
"name"
:
"joe"
,
"age"
: 70 }
{
"_id"
: ObjectId(
"54a530c3ff0df3732bac1680"
),
"id"
: 1,
"name"
:
"joe"
,
"age"
: 21,
"comments"
: [
"test2"
,
"test9"
,
"test5"
] } >
|
利用update的第四个参数进行批量更新:
1
2
3
4
5
|
> db.post.update({
"name"
:
"joe"
}, {$
set
:{
"age"
:30}},
false
,
true
)
WriteResult({
"nMatched"
: 2,
"nUpserted"
: 0,
"nModified"
: 2 })> db.post.
find
()
{
"_id"
: ObjectId(
"54a530c3ff0df3732bac1681"
),
"id"
: 2,
"name"
:
"joe"
,
"age"
: 30 }
{
"_id"
: ObjectId(
"54a530c3ff0df3732bac1680"
),
"id"
: 1,
"name"
:
"joe"
,
"age"
: 30,
"comments"
: [
"test2"
,
"test9"
,
"test5"
] }
>
|
附注:update方法参考
update( criteria, objNew, upsert, multi )
criteria : update的查询条件,类似sql update查询内where后面的
objNew : update的对象和一些更新的操作符(如$,$inc...)等,也可以理解为sql update查询内set后面的
upsert : 这个参数的意思是,无论false还是true,没有匹配的键则新增加一个;
multi : mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
二、更新文档键值,无键值的则新增键值;
1
2
3
4
5
6
7
8
9
10
|
> db.post.update({
"name"
:
"joe"
}, {$
set
:{
"sex"
:1}},
false
,
true
)
WriteResult({
"nMatched"
: 2,
"nUpserted"
: 0,
"nModified"
: 2 })
> db.post.
find
()
{
"_id"
: ObjectId(
"54a530c3ff0df3732bac1681"
),
"id"
: 2,
"name"
:
"joe"
,
"age"
: 30,
"sex"
: 1 }
{
"_id"
: ObjectId(
"54a530c3ff0df3732bac1680"
),
"id"
: 1,
"name"
:
"joe"
,
"age"
: 30,
"comments"
: [
"test2"
,
"test9"
,
"test5"
],
"sex"
: 1 }
> db.post.update({
"name"
:
"joe"
}, {$
set
:{
"school"
:
"marry"
}},
true
,
true
)
WriteResult({
"nMatched"
: 2,
"nUpserted"
: 0,
"nModified"
: 2 })
> db.post.
find
()
{
"_id"
: ObjectId(
"54a530c3ff0df3732bac1681"
),
"id"
: 2,
"name"
:
"joe"
,
"age"
: 30,
"sex"
: 1,
"school"
:
"marry"
}
{
"_id"
: ObjectId(
"54a530c3ff0df3732bac1680"
),
"id"
: 1,
"name"
:
"joe"
,
"age"
: 30,
"comments"
: [
"test2"
,
"test9"
,
"test5"
],
"sex"
: 1,
"school"
:
"marry"
} >
|
本文转自 bannerpei 51CTO博客,原文链接:http://blog.51cto.com/281816327/1598739,如需转载请自行联系原作者