Mongodb数据库教程第六节 - 修改操作
前言
这节主要来讲修改
-
update() updateOne() updateMany() replaceOne()
开始
修改替换所有
我们第一个对象是条件 第二个对象是替换内容
db.collection1.update({name:"lwx"},{address:"BeiJing"});
之前数据
// 1 { "_id": ObjectId("5d6eab638029235de7599705"), "name": "lwx", "age": "18" }
之后数据
// 1 { "_id": ObjectId("5d6eab638029235de7599705"), "address": "BeiJing" }
这是完全替换
但是我们需要的效果是什么 ? 是修改 对吧 这个怎么行呢 于是我们可以使用修饰符来解决这个问题
先看下图
我们这里有两个name为张三的 我们修改张三的年龄为25
通过 $set 操作符 就可以实现修改操作 但是
db.collection1.update({name:"张三"},{$set:{ age:25 }})
我们发现仅仅只是第一个修改 剩下的却没修改 update默认只会修改匹配到的第一个 那么假如说我想要我的年龄在25的基础上在增加10岁呢 怎么办? 我们可以使用 $inc 操作符 增加
db.collection1.update({name:"张三"},{$inc:{ age:10 }})
但是我们现在需要同时修改多个怎么办呢?
我们可以使用 updateMany() 使用如下指令就可以实现修改多条
db.collection1.updateMany({name:"张三"},{$set:{ age:10 }})
但是我就是想使用update操作呢 方便也不用记其他方法名 其实也是可以的 多加一个参数即可multi:true 表示可以修改多个
db.collection1.update({name:"张三"},{$set:{ age:20 }},{multi:true})
这就是update方法 其实就是集合了updateMany和updateOne方法把 那么updateOne方法如何使用 那肯定是一样的
如下代码
db.collection1.updateOne({name:"张三"},{$set:{ age:5 }})
还有我们的replaceOne 就是替换的吗 对吧 这个我们update也有这个效果
db.collection1.replaceOne({name:"张三"},{ name:"李四",age:5 })
其实我们的$set操作符还是可以增加字段的 非常自由 我们现在有这些字段 我们增加一个gender 可以发现我们原本没有这个字段但是现在 已经新增进去了
db.collection1.update({name:"张三"},{ $set:{ gender:"男" }})
结语
下一节说删除