MongoDB更新记录

MongoDB更新记录

MongoDB 中,我们需要更新一条记录,可以使用 update 函数,同时,当我们指定 id 时,通过 save 方法也可以实现更新记录。

通过 update 更新记录时,默认只更新一条符合条件的记录,如果我们需要更新所有符合条件的记录,我们需要将 multi 参数设置为 true。

MongoDB更新记录详解

语法

db_name.collection_name.update( <query>, <update>, { upsert, multi, writeConcern, collation } )

参数

参数 描述
db_name 数据库名
collection_name 集合名
query 必选项,是设置更新的文档的条件
update 为更新操作符
upsert 为布尔型可选项,表示如果不存在 update 的记录,是否插入这个新的文档。true 为插入;默认为 false,不插入
multi 也是布尔型可选项,默认是 false,只更新找到的第一条记录。如果为 true,则把按条件查询出来的记录全部更新
writeConcem 表示出错级别
collation 指定语言

说明

使用 update 更新记录时,可以通过 multi 参数来控制更新单条记录还是所有记录,默认只更新单条记录。

案例

我们首先,使用 mongo 命令,连接上数据库,具体命令如下:

mongo

如下图所示:

45_mongodb更新文档.png

现在,我们使用 use 命令,切换到 haicoder 数据库,具体命令如下:

use haicoder

现在,我们使用 insertMany 插入多条记录,具体命令如下:

db.haicoder.insertMany([{"name":"haicoder", "url":"www.haicoder.net"}, {"name":"HaiCoder", "url":"www.haicoder.net"}, {"name":"golang", "url":"https://haicoder.net/golang/golang-tutorial.html"}])

执行完毕后,此时,如下图所示:

46_mongodb更新文档.png

我们看到,此时提示我们成功插入了三条记录,现在,我们使用 find 查询当前的所有记录,具体命令如下:

db.haicoder.find()

执行完毕后,此时,如下图所示:

47_mongodb更新文档.png

现在,我们使用 update 修改 name 字段,具体命令如下:

db.haicoder.update({}, {"$set":{"name" : "HAICODER"}})

执行完毕后,我们再次使用 find 查看记录,如下图所示:

48_mongodb更新文档.png

我们看到,update 提示我们只更新了一条记录,现在,我们再次使用如上的语句根据 _id 条件来再次更新一条记录,并使用 find 查看当前的记录,具体命令如下:

db.haicoder.update({"_id" : ObjectId("5f62d74744c83190d8f6c3be")}, {"$set":{"name" : "HAICODER"}})

执行完毕后,如下图所示:

49_mongodb更新文档.png

如果我们需要更新多条记录, 我们需要指定 multi 参数为 true,现在,我们使用如下命令,更新多条记录:

db.haicoder.update({name:"HAICODER"}, {"$set":{"name" : "haicoder"}}, false, true)

执行完毕后,我们再次使用 find 查看记录,如下图所示:

50_mongodb更新文档.png

我们看到,此时,我们更新了所有符号条件的记录。

MongoDB更新记录总结

在 MongoDB 中,我们需要更新一条记录,可以使用 update 函数,同时,当我们指定 id 时,通过 save 方法也可以实现更新记录。

通过 update 更新记录时,默认只更新一条符合条件的记录,如果我们需要更新所有符合条件的记录,我们需要将 multi 参数设置为 true。