Làm cách nào để cập nhật giá trị cột trong MongoDB?

Phương thức update() cập nhật các giá trị trong tài liệu hiện có trong bộ sưu tập của MongoDB. Khi bạn cập nhật tài liệu của mình, giá trị của trường _id không thay đổi. Theo mặc định, db. thu thập. phương thức update() cập nhật một tài liệu. Bao gồm tùy chọn đa. true để cập nhật tất cả các tài liệu khớp với truy vấn đã cho. Phương pháp này có thể được sử dụng cho một lần cập nhật tài liệu cũng như nhiều tài liệu

cú pháp

db.COLLECTION_NAME.update({SELECTION_CRITERIA}, {$set:{UPDATED_DATA}}, {
     upsert: ,
     multi: ,
     writeConcern: ,
     collation: ,
     arrayFilters: [ , .. ],
     hint:          
   })

Thông số

  • Tham số đầu tiên là giá trị Cũ hơn ở dạng Tài liệu. Tài liệu là một cấu trúc được tạo từ các cặp tệp và giá trị, tương tự như các đối tượng JSON
  • Tham số thứ hai phải chứa từ khóa $set để cập nhật giá trị tài liệu chỉ định sau
  • Tham số thứ ba là tùy chọn

Thông số tùy chọn

  • Upsert. Giá trị mặc định của tham số này là sai. Khi đúng, nó sẽ tạo một tài liệu mới trong bộ sưu tập khi không có tài liệu nào khớp với điều kiện đã cho trong phương thức cập nhật
  • đa. Giá trị mặc định của tham số này là sai. Khi đúng, phương thức cập nhật sẽ cập nhật tất cả các tài liệu đáp ứng điều kiện truy vấn. Nếu không, nó sẽ chỉ cập nhật một tài liệu
  • viếtQuan tâm. Nó chỉ được sử dụng khi bạn không muốn sử dụng chế độ ghi mặc định. Loại tham số này là một tài liệu
  • đối chiếu. Nó chỉ định việc sử dụng đối chiếu cho các hoạt động. Nó cho phép người dùng chỉ định các quy tắc dành riêng cho ngôn ngữ để so sánh chuỗi như quy tắc cho chữ cái và dấu trọng âm. Loại tham số này là một tài liệu
  • mảngFilters. Nó là một mảng các tài liệu bộ lọc cho biết phần tử mảng nào cần sửa đổi cho thao tác cập nhật trên trường mảng. Loại tham số này là một mảng
  • gợi ý. Đó là một tài liệu hoặc trường chỉ định chỉ mục sẽ sử dụng để hỗ trợ bộ lọc. Nó có thể lấy một tài liệu đặc tả chỉ mục hoặc chuỗi tên chỉ mục và nếu bạn chỉ định một chỉ mục không tồn tại thì nó sẽ báo lỗi

ví dụ

Trong các ví dụ sau, chúng tôi đang làm việc với

  • cơ sở dữ liệu. gfg
  • bộ sưu tập. sinh viên
  • Tài liệu. Ba tài liệu chứa tên và tuổi của học sinh

Làm cách nào để cập nhật giá trị cột trong MongoDB?

  • Cập nhật tên của tài liệu có khóa tên có giá trị avi thành hello world
db.student.update({name:"avi"},{$set:{name:"helloword"}})

Ở đây, tham số đầu tiên là tài liệu có giá trị được thay đổi {tên. ”prachi”} và tham số thứ hai được đặt từ khóa có nghĩa là đặt (cập nhật) giá trị của trường tuổi thành 20

Các phương thức update() và save() của MongoDB đượ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 cập nhật MongoDB()

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 phương thức update() như sau -

>db.COLLECTION_NAME.update(SELECTION_CRITERIA, UPDATED_DATA)

Ví dụ

Hãy xem xét bộ sưu tập mycol có dữ liệu sau

{ "_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' cho 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 Lưu () MongoDB

Phương thức save() thay thế tài liệu hiện có bằng tài liệu mới được truyền vào phương thức save()

cú pháp

Cú pháp cơ bản của phương thức save() trong MongoDB được hiển thị bên dưới -

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

Ví 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 findOneAndUpdate() của MongoDB

Phương thức findOneAndUpdate() 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 phương thức findOneAndUpdate() như sau -

________số 8

Ví dụ

Giả sử chúng ta đã tạo một bộ sưu tập có tên empDetails và chèn ba tài liệu vào đó như hình bên dưới -

> 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"
		}
	]
)

Ví dụ sau cập nhật giá trị tuổi và email của tài liệu có tên 'Radhika'

db.student.update({name:"avi"},{$set:{name:"helloword"}})
0

Phương thức cập nhật MongoDBOne()

Phương pháp này cập nhật một 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 updateOne() như sau -

db.student.update({name:"avi"},{$set:{name:"helloword"}})
1

Ví dụ

{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
0

Phương thức updateMany() của MongoDB

Phương thức updateMany() cập nhật tất cả các tài liệu khớ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 -

{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
1

Ví dụ

{ "_id" : ObjectId(5983548781331adf45ec5), "title":"MongoDB Overview"}
{ "_id" : ObjectId(5983548781331adf45ec6), "title":"NoSQL Overview"}
{ "_id" : ObjectId(5983548781331adf45ec7), "title":"Tutorials Point Overview"}
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 phương thức find như bên dưới -

Làm cách nào để tăng giá trị trường trong MongoDB?

Toán tử $inc tăng trường theo một giá trị đã chỉ định và có dạng sau. { $inc. {

Làm cách nào để cập nhật thuộc tính cụ thể trong MongoDB?

Có thể cập nhật trường MongoDB bằng giá trị của trường khác không?

Bắt đầu từ MongoDB 4. 2 bạn có thể thực hiện Cập nhật bằng Đường ống tổng hợp . Một đường dẫn tổng hợp cho phép cập nhật rõ ràng hơn bao gồm các trường được tính toán và tham chiếu đến các giá trị trường khác trong cùng một tài liệu.

Làm cách nào để thay thế giá trị trong MongoDB?

Việc thay thế các giá trị trong MongoDB được thực hiện bằng hai hàm phổ biến trong mongo shell. Đây là các hàm replaceOne() và findOneAndReplace() trong MongoDB . Cả hai chức năng được sử dụng để thay thế các giá trị trong MongoDB và hoạt động ít nhiều giống nhau.