MongoDB 更新文档命令是用来更新现有的 MongoDB 文档的一种方法。它可以用来更新单个文档或多个文档,也可以用来删除和修改现有的字段。MongoDB 更新文档命令使用 update() 和 updateMany() 方法,这些方法都可以在 MongoDB 中执行。
// 使用update()方法来更新单个文档 db.collection.update(, // 要匹配的条件 , // 要执行的修改内容 { upsert: , // 如果不存在,是否创建一个新的记录(默认false) multi: , // 是否要对多个记录进行修改(默认false) writeConcern: // 写关注选项(默认{ w: 1 }) } ) // 使用updateMany()方法来批量修改多个文档 db.collection.updateMany( , // 要匹配的条件 , // 要执行的修改内容 { upsert: , // 如果不存在,是否创建一个新的记录(默认false) writeConcern: // 写关注选项(默认{ w: 1 }) } )
MongoDB 使用 update()
和 save()
方法来更新集合中的文档。接下来让我们详细来看下两个函数的应用及其区别。
update()
方法用于更新已存在的文档。语法格式如下:
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
我们在集合 col 中插入如下数据:
>db.col.insert({
title: "MongoDB 教程",
description: "MongoDB 是一个 Nosql 数据库",
by: "",
url: "http://www..cn",
tags: ["mongodb", "database", "NoSQL"],
likes: 100
})
接着我们通过 update() 方法来更新标题(title):
>db.col.update({"title":"MongoDB 教程"},{$set:{"title":"MongoDB"}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 }) # 输出信息
> db.col.find().pretty()
{
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "",
"url" : "http://www..cn",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
>
可以看到标题(title)由原来的 "MongoDB 教程" 更新为了 "MongoDB"。
以上语句只会修改第一条发现的文档,如果你要修改多条相同的文档,则需要设置 multi 参数为 true。
>db.col.update({"title":"MongoDB 教程"},{$set:{"title":"MongoDB"}},{multi:true})
save()
方法通过传入的文档来替换已有文档,_id 主键存在就更新,不存在就插入。语法格式如下:
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
参数说明:
以下实例中我们替换了 _id 为 56064f89ade2f21f36b03136 的文档数据:
>db.col.save({
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "W3Cshcool",
"url" : "http://www..cn",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
})
替换成功后,我们可以通过 find() 命令来查看替换后的数据
>db.col.find().pretty()
{
"_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一个 Nosql 数据库",
"by" : "",
"url" : "http://www..cn",
"tags" : [
"mongodb",
"NoSQL"
],
"likes" : 110
}
>
只更新第一条记录:
db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );
全部更新:
db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );
只添加第一条:
db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );
全部添加进去:
db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );
全部更新:
db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );
只更新第一条记录:
db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );
查询有很多优点。您可以一次又一次地保存和运行相同的查询,并且很多时候您想添加替换条件。您可以通过以下两种方式添加替换条件...
DELETE命令从指定的表中删除表行,并返回已删除的数量。 访问使用ROW_COUNT()函数删除的数量。 WHERE子句指定行,如果没...
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。Redis 客户端可以订阅任意数量的频道...