开发者学堂课程【场景实践 - 基于MongoDB实现商品管理系统:Mongodb的修改数据讲解】学习笔记与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/728/detail/13000
Mongodb 的修改数据讲解
一、更新 Mongodb 数据库中的数据
1.强硬的文档替换式更新操作
db.[collectionName].update({查询器},{修改器})
强硬的更新会用新的文档代替老的文档
修改器名称 |
语法 |
案例 |
$set |
{$set:{field: value} } |
{$set:{name:"uspcat"}} |
$set,它用来指定一个键值对,如果存在键就进行修改不存在则进行添加。
如果是不带$的,字段(键)不存在则会进行覆盖。
演示:
d
b.persons.update({“_id”:1},{
“name”:“
12
”})
db.persons.find
()
{" _id" : ObjectId("5aa8cc63baf95f1915073ea4"),
”name”:”cat”
{"_id" : 1,"name" : "12"
}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073ea5"'),"name":1}
{"_id" :
O
bjectId("5aa8d2cbbaf95f1915073ea6")
,
"name":2}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073ea7"),
"name":3}
{"_id" :ObjectId("5aa8d2cbbaf95f1915073ea8')
,
"nam
e":4}
{"_id" : 0bjectId("5aa8d2cbbaf95f1915073ea9"),"nam
e":5}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073eaba),"name":6}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073eab"),"name":7}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073eac""),"name":8}
{"_id" : 0bjectId("5aa8d2cbbaf95f1915073ead"),"name":9}
接下来修改不存在的字段:d
b.persons.update({“_id”:1},{
“age”:“
4
”})
回车查询之后,
db.persons.find
()
{" _id" : ObjectId("5aa8cc63baf95f1915073ea4"),
”name”:”cat”
{"_id" : 1,"
age
" : "4"
}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073ea5"'),"name":1}
{"_id" :
O
bjectId("5aa8d2cbbaf95f1915073ea6")
,
"name":2}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073ea7"),
"name":3}
{"_id" :ObjectId("5aa8d2cbbaf95f1915073ea8')
,
"nam
e":4}
{"_id" : 0bjectId("5aa8d2cbbaf95f1915073ea9"),"nam
e":5}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073eaba),"name":6}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073eab"),"name":7}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073eac""),"name":8}
{"_id" : 0bjectId("5aa8d2cbbaf95f1915073ead"),"name":9}
发现:如果修改的字段不存在,就会把原来的字段覆盖。
接下来演示$set:
d
b.persons.update({“_id”:1},{$set:{
“n
ame
”:“
zhangsan
”}})
db.persons.find
()
{" _id" : ObjectId("5aa8cc63baf95f1915073ea4"),
”name”:”cat”
{"_id" : ObjectId("5aa8d2cbbaf95f1915073ea5"'),"name":1}
{"_id" :
O
bjectId("5aa8d2cbbaf95f1915073ea6")
,
"name":2}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073ea7"),
"name":3}
{"_id" :ObjectId("5aa8d2cbbaf95f1915073ea8')
,
"nam
e":4}
{"_id" : 0bjectId("5aa8d2cbbaf95f1915073ea9"),"nam
e":5}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073eaba),"name":6}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073eab"),"name":7}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073eac""),"name":8}
{"_id" : 0bjectId("5aa8d2cbbaf95f1915073ead"),"name":9}
{"_id" : 1,"
age
" : "4",
“n
ame
”:“
zhangsan
”
}
可以看出:如果要修改的name字段不存在,不会将原来的 age 覆盖,会进行添加。
以上就是 $set 和不带 $set 的区别。