MongoDB是基于分布式文件存储的数据库,与关系型数据库不同,记录中的字段数量可以各不相同。本文将介绍如何对MongoDB记录中不存在的字段进行批量添加并赋值。
update() 方法用于更新已存在的文档,语法如下:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
query: update的查询条件,类似sql update查询内where后面的。
update: update的对象和一些更新的操作符,也可以理解为sql update查询内set后面的。
upsert: 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew, true为插入,默认是false,不插入。
multi: 可选,mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,则更新所有按条件查出来的多条记录。
writeConcern: 可选,抛出异常的级别。
1.创建测试数据库
use testdb
db.createUser(
{
"user":"root",
"pwd":"123456",
"roles":[{"role" : "readWrite", "db":"testdb"}]
}
)
db.auth(
{
"user":"root",
"pwd":"123456"
}
)
2.插入测试数据,部分有is_auth,is_admin
db.member.insert([
{
"id" : 1,
"name" : "fdipzone",
"is_auth" : 1,
"is_admin" : 1
},
{
"id" : 2,
"name" : "tom",
"is_admin" : 1
},
{
"id" : 3,
"name" : "polly"
},
{
"id" : 4,
"name" : "anslem"
},
{
"id" : 5,
"name" : "terry",
"is_auth" : 1
}
])
查询插入记录
db.member.find();
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93a"), "id" : 1, "name" : "fdipzone", "is_auth" : 1, "is_admin" : 1 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93b"), "id" : 2, "name" : "tom", "is_admin" : 1 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93c"), "id" : 3, "name" : "polly" }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93d"), "id" : 4, "name" : "anslem" }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93e"), "id" : 5, "name" : "terry", "is_auth" : 1 }
3.对于不存在is_auth, is_admin字段的记录,批量插入is_auth, is_admin字段,值为0。
批量插入is_auth:0
db.member.update(
{"is_auth" : {$exists : false}},
{"$set" : {"is_auth" : 0}},
false,
true
)
批量插入is_admin:0
db.member.update(
{"is_admin" : {$exists : false}},
{"$set" : {"is_admin" : 0}},
false,
true
)
插入后查询,全部记录都已经含有is_auth, is_admin字段
db.member.find();
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93a"), "id" : 1, "name" : "fdipzone", "is_auth" : 1, "is_admin" : 1 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93b"), "id" : 2, "name" : "tom", "is_admin" : 1, "is_auth" : 0 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93c"), "id" : 3, "name" : "polly", "is_auth" : 0, "is_admin" : 0 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93d"), "id" : 4, "name" : "anslem", "is_auth" : 0, "is_admin" : 0 }
{ "_id" : ObjectId("58eb8f83e352c5ee4b6db93e"), "id" : 5, "name" : "terry", "is_auth" : 1, "is_admin" : 0 }