MongoDB 更新文档
MongoDB 使用 update() 和 save() 方法来更新集合中的文档。接下来让我们详细来看下两个函数的应用及其区别。
语法:
update() 方法的基本语法如下
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
writeConcern: <document>
}
)
参数说明:
- query : update的查询条件,类似sql update查询内where后面的。
- update : update的对象和一些更新的操作符(如$,$inc…)等,也可以理解为sql update查询内set后面的
- upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
- multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- writeConcern :可选,抛出异常的级别。
例子
考虑以下数据mycol集合。
> db.mycol.find().pretty()
{
"_id" : ObjectId("5799c3eb235910620b89c674"),
"title" : "MongoDB Overview",
"description" : "MongoDB is no sql database",
"by" : "tutorials itcast",
"url" : "http://www.itcast.cn",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
{
"_id" : ObjectId("5799c3f3235910620b89c675"),
"title" : "MySQL Overview",
"description" : "MySQL is sql database",
"by" : "tutorials itcast",
"url" : "http://www.itcast.cn",
"tags" : [
"MySQL",
"database",
"SQL"
],
"likes" : 40
}
下面的例子将设置标题MongoDB Overview
的文件,更新其标题是New MongoDB Tutorial
> db.mycol.update({
'title': 'MongoDB Overview'
},
{
$set: {
'title': 'New MongoDB Tutorial'
}
})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.mycol.find()
> db.mycol.find().pretty()
{
"_id" : ObjectId("5799c3eb235910620b89c674"),
"title" : "New MongoDB Tutorial",
"description" : "MongoDB is no sql database",
"by" : "tutorials itcast",
"url" : "http://www.itcast.cn",
"tags" : [
"mongodb",
"database",
"NoSQL"
],
"likes" : 100
}
{
"_id" : ObjectId("5799c3f3235910620b89c675"),
"title" : "MySQL Overview",
"description" : "MySQL is sql database",
"by" : "tutorials itcast",
"url" : "http://www.itcast.cn",
"tags" : [
"MySQL",
"database",
"SQL"
],
"likes" : 40
}
MongoDB默认将只更新单一的文件,来更新多个你需要设置参数置multi
为true
>db.mycol.update({'by':'tutorials itcast'},{$set:{'by':'itcast'}},{multi:true})
MongoDB Save() 方法
save() 方法覆盖原有的文档 或者 插入新的文档
语法
MongoDB 的 save() 方法的基本语法如下:
db.collection.save(
<document>,
{
writeConcern: <document>
}
)
参数说明:
- document : 要存储的文档数据。
- writeConcern :可选,抛出异常的级别。
例子
下面的例子将取代文件具有_id为 '5799c3eb235910620b89c674'
>db.mycol.save( { "_id" : ObjectId("5799c3eb235910620b89c674"), "title":"itcast New Topic", "by":"itcast" })WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.mycol.find().pretty(){ "_id" : ObjectId("5799c3eb235910620b89c674"), "title" : "itcast New Topic", "by" : "itcast"}{ "_id" : ObjectId("5799c3f3235910620b89c675"), "title" : "MySQL Overview", "description" : "MySQL is sql database", "by" : "tutorials itcast", "url" : "http://www.itcast.cn", "tags" : [ "MySQL", "database", "SQL" ], "likes" : 40}}>
更新操作 在 MongoDB update() 和 SQL Update 区别
SQL Update Statements | MongoDB update() Statements |
---|---|
|
|
|
|