English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
MongoDB update()и save()Метод используется для обновления документа в集合е. Метод update() обновляет значения существующего документа, а метод save() заменяет существующий документ документом, переданным в метод save().
Метод update() обновляет значения существующего документа.
update()Основная грамматика метода:
update()
>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
Предположим, что у коллекции mycol есть следующие данные. {"_id" : ObjectId(5983548781331adf45ec6), "title":"Введение в NoSQL"} {"_id" : ObjectId(5983548781331adf45ec7), "title":"Новая учебная программа MongoDB"}
{"_id" : ObjectId(5983548781331adf45ec5), "title":"Введение в MongoDB"}
Ниже приведен пример изменения заголовка документа с названием "MongoDB Overview" на новый заголовок "New MongoDB Tutorial". >db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'Новая MongoDB учебная программа'}}) >db.mycol.find() {"_id" : ObjectId(5983548781331adf45ec5), "title":"Новая MongoDB учебная программа"} {"_id" : ObjectId(5983548781331adf45ec6), "title":"Введение в NoSQL"} {"_id" : ObjectId(5983548781331adf45ec7), "title":"Новая учебная программа MongoDB"} >
По умолчанию, MongoDB обновляет только один документ. Чтобы обновить несколько документов, вам нужно установить параметр "multi" в true.
>db.mycol.update({'title':'MongoDB 简介'}, {$set:{'title':'Новая MongoDB教程'},multi:true})
save()Метод использует метод save() для замены существующего документа новым документом.
MongoDB save()Основная грамматика метода представлена следующим образом-
>db.COLLECTION_NAME.save({"_id":ObjectId(),NEW_DATA})
Ниже приведен пример замены документа с _id '5983548781331adf45ec5'.
>db.mycol.save( { "_id" : ObjectId("507f191e810c19729de860ea"), "title":"Новая тема教程", "by":"Основной курс" } ) WriteResult({ "nMatched" : 0, "nUpserted" : 1, "nModified" : 0, "_id" : ObjectId("507f191e810c19729de860ea") ) >db.mycol.find() { "_id" : ObjectId("507f191e810c19729de860e6"), "title":"новая аннотация учебника", "by":"Tutorials Point" { "_id" : ObjectId("507f191e810c19729de860e6"), "title":"Введение в NoSQL"} { "_id" : ObjectId("507f191e810c19729de860e6"), "title":"новая тема учебника"} >
findOneAndUpdate()Метод обновляет значения существующих документов.
findOneAndUpdate()Основная грамматика метода:
>db.COLLECTION_NAME.findOneAndUpdate(SELECTIOIN_CRITERIA, UPDATED_DATA)
Предположим, что мы создали коллекцию с именем empDetails и добавили в нее три документа, как показано ниже:
> db.empDetails.insertMany( [ { First_Name: "Radhika", Last_Name: "Sharma", Age: "26", e_mail: "[email protected]", phone: "9000012345" } { First_Name: "Rachel", Last_Name: "Christopher", Age: "27", e_mail: "[email protected]", phone: "9000054321" } { First_Name: "Fathima", Last_Name: "Sheik", Age: "24", e_mail: "[email protected]", phone: "9000054321" } ] )
Пример обновления значения возраста и электронной почты документа с именем «Radhika».
> db.empDetails.findOneAndUpdate( {"First_Name" : "Radhika"}, {"$set" : { "Age" : '30', "e_mail" : "[email protected]"}} ) { "_id" : ObjectId("5dd6636870fb13eec3963bf5"), "First_Name" : "Radhika", "Last_Name" : "Sharma", "Age" : "30", "e_mail" : "[email protected]", "phone" : "9000012345" }
Этот метод обновляет один документ, соответствующий заданному фильтру.
Основная грамматика метода updateOne() такая:
> db.COLLECTION_NAME.updateOne(<filter>, <update>)
> db.empDetails.updateOne( {"First_Name" : "Radhika"}, {"$set" : { "Age" : '30', "e_mail" : "[email protected]"}} ) {"acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 0} >
Метод updateMany() обновляет все документы, соответствующие заданному фильтру.
Основная грамматика метода updateMany() такая:
> db.COLLECTION_NAME.update(<filter>, <update>)
> db.empDetails.updateMany( {"Age" : { "$gt" : "25" }}, {"$set" : { "Age" : '00'}} ) {"acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2}
Если использовать следующий метод find для поиска содержимого документа, можно увидеть обновленные значения-
> db.empDetails.find() {"_id" : ObjectId("5dd6636870fb13eec3963bf5"), "First_Name" : "Radhika", "Last_Name" : "Sharma", "Age" : "00", "e_mail" : "[email protected]", "phone" : "9000012345"} {"_id": ObjectId("5dd6636870fb13eec3963bf6"), "First_Name": "Rachel", "Last_Name": "Christopher", "Age": "00", "e_mail": "[email protected]", "phone": "9000054321"} {"_id": ObjectId("5dd6636870fb13eec3963bf7"), "First_Name": "Fathima", "Last_Name": "Sheik", "Age": "24", "e_mail": "[email protected]", "phone": "9000054321"} >