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:"男" }})

结语

下一节说删除

经验分享 程序员 微信小程序 职场和发展