MongoDB - Cập nhật tài liệu
MongoDB's update() và save()các phương pháp được sử dụng để cập nhật tài liệu vào một bộ sưu tập. Phương thức update () cập nhật các giá trị trong tài liệu hiện có trong khi phương thức save () thay thế tài liệu hiện có bằng tài liệu được truyền trong phương thức save ().
Phương thức MongoDB Update ()
Phương thức update () cập nhật các giá trị trong tài liệu hiện có.
Cú pháp
Cú pháp cơ bản của update() phương pháp như sau:
>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)
Thí dụ
Hãy xem xét bộ sưu tập mycol có dữ liệu sau đây.
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
Ví dụ sau sẽ đặt tiêu đề mới 'Hướng dẫn MongoDB mới' của các tài liệu có tiêu đề là 'Tổng quan về MongoDB'.
>db.mycol.update({'title':'MongoDB Overview'},{$set:{'title':'New MongoDB Tutorial'}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
>db.mycol.find()
{ "_id" : ObjectId(5983548781331adf45ec5), "title":"New MongoDB Tutorial"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
>
Theo mặc định, MongoDB sẽ chỉ cập nhật một tài liệu duy nhất. Để cập nhật nhiều tài liệu, bạn cần đặt tham số 'multi' thành true.
>db.mycol.update({'title':'MongoDB Overview'},
{$set:{'title':'New MongoDB Tutorial'}},{multi:true})
Phương thức MongoDB Save ()
Các save() phương thức thay thế tài liệu hiện có bằng tài liệu mới được truyền trong phương thức save ().
Cú pháp
Cú pháp cơ bản của MongoDB save() phương pháp được hiển thị bên dưới -
>db.COLLECTION_NAME.save({_id:ObjectId(),NEW_DATA})
Thí dụ
Ví dụ sau sẽ thay thế tài liệu bằng _id '5983548781331adf45ec5'.
>db.mycol.save(
{
"_id" : ObjectId("507f191e810c19729de860ea"),
"title":"Tutorials Point New Topic",
"by":"Tutorials Point"
}
)
WriteResult({
"nMatched" : 0,
"nUpserted" : 1,
"nModified" : 0,
"_id" : ObjectId("507f191e810c19729de860ea")
})
>db.mycol.find()
{ "_id" : ObjectId("507f191e810c19729de860e6"), "title":"Tutorials Point New Topic",
"by":"Tutorials Point"}
{ "_id" : ObjectId("507f191e810c19729de860e6"), "title":"NoSQL Overview"}
{ "_id" : ObjectId("507f191e810c19729de860e6"), "title":"Tutorials Point Overview"}
>
Phương thức MongoDB findOneAndUpdate ()
Các findOneAndUpdate() phương thức cập nhật các giá trị trong tài liệu hiện có.
Cú pháp
Cú pháp cơ bản của findOneAndUpdate() phương pháp như sau:
>db.COLLECTION_NAME.findOneAndUpdate(SELECTIOIN_CRITERIA, UPDATED_DATA)
Thí dụ
Giả sử chúng ta đã tạo một bộ sưu tập có tên là empDetails và chèn ba tài liệu vào đó như hình dưới đây -
> db.empDetails.insertMany(
[
{
First_Name: "Radhika",
Last_Name: "Sharma",
Age: "26",
e_mail: "radhika_sharma.123@gmail.com",
phone: "9000012345"
},
{
First_Name: "Rachel",
Last_Name: "Christopher",
Age: "27",
e_mail: "Rachel_Christopher.123@gmail.com",
phone: "9000054321"
},
{
First_Name: "Fathima",
Last_Name: "Sheik",
Age: "24",
e_mail: "Fathima_Sheik.123@gmail.com",
phone: "9000054321"
}
]
)
Ví dụ sau cập nhật độ tuổi và giá trị email của tài liệu với tên 'Radhika'.
> db.empDetails.findOneAndUpdate(
{First_Name: 'Radhika'},
{ $set: { Age: '30',e_mail: 'radhika_newemail@gmail.com'}}
)
{
"_id" : ObjectId("5dd6636870fb13eec3963bf5"),
"First_Name" : "Radhika",
"Last_Name" : "Sharma",
"Age" : "30",
"e_mail" : "radhika_newemail@gmail.com",
"phone" : "9000012345"
}
Phương thức MongoDB updateOne ()
Phương pháp này cập nhật một tài liệu phù hợp với bộ lọc nhất định.
Cú pháp
Cú pháp cơ bản của phương thức updateOne () như sau:
>db.COLLECTION_NAME.updateOne(<filter>, <update>)
Thí dụ
> db.empDetails.updateOne(
{First_Name: 'Radhika'},
{ $set: { Age: '30',e_mail: 'radhika_newemail@gmail.com'}}
)
{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 0 }
>
Phương thức MongoDB updateMany ()
Phương thức updateMany () cập nhật tất cả các tài liệu phù hợp với bộ lọc đã cho.
Cú pháp
Cú pháp cơ bản của phương thức updateMany () như sau:
>db.COLLECTION_NAME.update(<filter>, <update>)
Thí dụ
> db.empDetails.updateMany(
{Age:{ $gt: "25" }},
{ $set: { Age: '00'}}
)
{ "acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2 }
Bạn có thể thấy các giá trị được cập nhật nếu bạn truy xuất nội dung của tài liệu bằng cách sử dụng phương pháp tìm như được hiển thị bên dưới:
> db.empDetails.find()
{ "_id" : ObjectId("5dd6636870fb13eec3963bf5"), "First_Name" : "Radhika", "Last_Name" : "Sharma", "Age" : "00", "e_mail" : "radhika_newemail@gmail.com", "phone" : "9000012345" }
{ "_id" : ObjectId("5dd6636870fb13eec3963bf6"), "First_Name" : "Rachel", "Last_Name" : "Christopher", "Age" : "00", "e_mail" : "Rachel_Christopher.123@gmail.com", "phone" : "9000054321" }
{ "_id" : ObjectId("5dd6636870fb13eec3963bf7"), "First_Name" : "Fathima", "Last_Name" : "Sheik", "Age" : "24", "e_mail" : "Fathima_Sheik.123@gmail.com", "phone" : "9000054321" }
>