MongoDB(五):更新文档、删除文档

database

1. 更新文档

MongoDB的uptade()和save()方法用于将集合中的文档更新。update()方法更新现有文档中的值,而save()方法是传递文档数据替换现有文档。从3.2版本开始,MongoDB提供以下更新集合文档的方法:

db.collection.updateOne()向指定集合更新单个文档

db.collection.updateMany()向指定集合更新多个文档

1.1 update()方法

update()方法更新现有文档中的值。

语法:

> db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)

实例:

mycol集合具有以下数据:

> db.mycol.find({}, {"_id":1, "title":1})

{ "_id" : 100, "title" : "MongoDB Overview" }

{ "_id" : 101, "title" : "MongoDB Guide" }

{ "_id" : 102, "title" : "NoSQL Database" }

{ "_id" : 104, "title" : "Python Quick Guide" }

>

将标题为“MongoDB Overview”的文档设置为“New Update MongoDB Overview”。

> db.mycol.find({"title":"MongoDB Overview"},{"_id":1, "title":1})

{ "_id" : 100, "title" : "MongoDB Overview" }

> # 更新操作

> db.mycol.update({"title":"MongoDB Overview"},{$set:{"title":"New Update MongoDB Overview"}})

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

> # 查询更新后的结果 -

> db.mycol.find({"_id":100},{"_id":1, "title":1})

{ "_id" : 100, "title" : "New Update MongoDB Overview" }

>

默认情况下,MongoDB只会更新一个文档。要更新多个文档,需要将参数’multi‘设置为true。

>db.mycol.update({"title":"MongoDB Overview"},

{$set:{"title":"New Update MongoDB Overview"}},{multi:true})

1.2 Save()方法

save方法使用传递的文档数据替换现有文档。

语法:

>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})

实例:

将_id为100的文档使用新的文档替换。

db.mycol.save(

{

"_id" : 100, "title":"UpdateBySave()Method.", "by":"yiibai.com"

}

)

WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })

db.mycol.find({"_id":100}, {"_id":1, "title":1})

{ "_id" : 100, "title" : "UpdateBySave()Method." }

2. 删除文档

MongoDB提供了三个删除文档的方法:remove()、deleteOne()、deleteMany()。

2.1 remove()方法

remove()是最早的删除方法,现在使用的人也不少。

在执行remove()函数前先执行find()命令来判断执行的条件是否正确,这是一个比较好的习惯。

remove()方法接受两个参数。的一个是删除条件,第二个是标志:justOne。

criteria:(可选)符合删除条件的集合将被删除。

justOne:(可选)如果设置为true或1,则只删除一个文档。

语法:

>db.COLLECTION_NAME.remove(DELLETION_CRITTERIA)

mycol集合具有以下数据:

> db.mycol.find({}, {"_id":1, "title":1})

{ "_id" : 101, "title" : "MongoDB Guide" }

{ "_id" : 102, "title" : "NoSQL Database" }

{ "_id" : 104, "title" : "Python Quick Guide" }

{ "_id" : 100, "title" : "UpdateBySave()Method." }

>

删除_id为“100”的文档。

> db.mycol.find({}, {"_id":1, "title":1})

{ "_id" : 101, "title" : "MongoDB Guide" }

{ "_id" : 102, "title" : "NoSQL Database" }

{ "_id" : 104, "title" : "Python Quick Guide" }

{ "_id" : 100, "title" : "UpdateBySave()Method." }

>

> db.mycol.remove({"_id":100})

WriteResult({ "nRemoved" : 1 })

> db.mycol.find({}, {"_id":1, "title":1})

{ "_id" : 101, "title" : "MongoDB Guide" }

{ "_id" : 102, "title" : "NoSQL Database" }

{ "_id" : 104, "title" : "Python Quick Guide" }

>

如果有多条记录,并且只想删除第一条记录,则在remove()方法中设置justOne参数。

>db.COLLECTION_NAME.remove(DELETION_CRITERIA,1)

如果要删除所有文档记录,可以在remove()方法中设置justOne参数。

如果不指定删除条件,MongoDB 将删除集合中的所有文档。 这相当于SQL的truncate命令。

>db.mycol.remove()

>db.mycol.find()

>

2.2 daleteOne()方法和deleteMany()方法

db.mycol.deleteMany({})  # 删除所有 document

db.mycol.deleteMany({ _id : "1" }) # 删除所有 匹配到document

db.mycol.deleteOne( { _id: "3" } ) # 只删除第一个匹配的 document

remove()方法可以说是deleteOne()、deleteMany()的集合。remove()方法是有那个boolean值的justOne参数来分别是否只删除一个文档,也就是区分deleteOne()、deleteMany()。

以上是 MongoDB(五):更新文档、删除文档 的全部内容, 来源链接: utcz.com/z/531851.html

回到顶部