开发者学堂课程【场景实践 - 基于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,它用来指定一个键值对,如果存在键就进行修改不存在则进行添加。
如果是不带$的,字段(键)不存在则会进行覆盖。
演示:
db.persons.update({“_id”:1},{“name”:“12”})
db.persons.find()
{" _id" : ObjectId("5aa8cc63baf95f1915073ea4"),
”name”:”cat”
{"_id" : 1,"name" : "12"}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073ea5"'),"name":1}
{"_id" :ObjectId("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}
接下来修改不存在的字段:db.persons.update({“_id”:1},{“age”:“4”})
回车查询之后,
db.persons.find()
{" _id" : ObjectId("5aa8cc63baf95f1915073ea4"),
”name”:”cat”
{"_id" : 1,"age " : "4"}
{"_id" : ObjectId("5aa8d2cbbaf95f1915073ea5"'),"name":1}
{"_id" :ObjectId("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:
db.persons.update({“_id”:1},{$set:{“name”:“zhangsan”}})
db.persons.find()
{" _id" : ObjectId("5aa8cc63baf95f1915073ea4"),
”name”:”cat”
{"_id" : ObjectId("5aa8d2cbbaf95f1915073ea5"'),"name":1}
{"_id" :ObjectId("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",“name”:“zhangsan”}
可以看出:如果要修改的name字段不存在,不会将原来的 age 覆盖,会进行添加。
以上就是 $set 和不带 $set 的区别。