MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB - Cập nhật tài liệu

Sử dụng update() phương thức hoặc save() phương pháp cập nhật tài liệu trong MongoDB.

Trong MongoDB, cả update()save() có thể được sử dụng để cập nhật một tài liệu.

update() phương thức cập nhật các giá trị trong một tài liệu hoặc các tài liệu hiện có, trong khi save() phương thức thay thế một tài liệu bằng tài liệu được truyền vào dưới dạng một tham số.

Tuy nhiên, update() phương thức cũng có thể thay thế toàn bộ tài liệu, tùy thuộc vào tham số được truyền vào.

update() Phương pháp

Đây là một ví dụ về update() phương pháp.

Đầu tiên, hãy chọn một bản ghi để cập nhật:

db.musicians.find({ _id: 6 }).pretty()

Kết quả:

{
	"_id" : 6,
	"name" : "Jeff Martin",
	"instrument" : "Vocals",
	"born" : 1969
}

Jeff thực sự làm được nhiều điều hơn là chỉ hát. Vì vậy, chúng ta hãy thêm một số công cụ khác. Chúng tôi sẽ sử dụng $set toán tử để cập nhật một trường.

db.musicians.update(
        { _id: 6 }, 
        { $set:{ instrument : [ "Vocals", "Guitar", "Sitar" ] } }
    )

Kết quả:

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

Bây giờ nếu chúng tôi thực hiện một truy vấn khác, chúng tôi thấy rằng tài liệu đã được cập nhật như đã chỉ định:

db.musicians.find({ _id: 6 }).pretty()

Kết quả:

{
	"_id" : 6,
	"name" : "Jeff Martin",
	"instrument" : [
		"Vocals",
		"Guitar",
		"Sitar"
	],
	"born" : 1969
}

Một số tùy chọn khác:

  • Nếu trường không tồn tại, $set toán tử sẽ thêm một trường mới với giá trị được chỉ định, với điều kiện là trường mới không vi phạm ràng buộc về kiểu.
  • Bạn cũng có thể sử dụng { upsert: true } để tạo tài liệu mới khi không có tài liệu nào phù hợp với truy vấn.
  • Bạn có thể sử dụng { multi: true } để cập nhật nhiều tài liệu đáp ứng tiêu chí truy vấn. Theo mặc định, tùy chọn này được đặt thành false , vì vậy chỉ một tài liệu được cập nhật nếu bạn không đặt nó thành true .

save() Phương pháp

save() phương thức là sự kết hợp giữa update()insert() . Khi bạn sử dụng save() , nếu tài liệu tồn tại, nó sẽ được cập nhật. Nếu nó không tồn tại, nó sẽ được tạo.

Nếu bạn không chỉ định _id , MongoDB sẽ tạo một tài liệu có _id có chứa ObjectId giá trị (theo một insert() ).

Nếu bạn chỉ định một _id , nó thực hiện cập nhật với { upsert: true } , nghĩa là, nó tạo ra một tài liệu mới nếu không có tài liệu nào phù hợp với truy vấn.

Chúng tôi hiện không có bất kỳ tài liệu nào về nhà sản xuất của chúng tôi thu thập. Hãy tạo một cái bằng cách sử dụng save() phương pháp:

db.producers.save({ _id: 1, name: "Bob Rock" })

Kết quả:

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

Bây giờ nếu chúng ta tìm kiếm nhà sản xuất bộ sưu tập, chúng tôi thấy bản ghi mới được tạo của chúng tôi:

db.producers.find()

Kết quả:

{ "_id" : 1, "name" : "Bob Rock" }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb tìm bên trong mảng phụ

  2. Mẹo quản lý cấu hình cơ sở dữ liệu của bạn

  3. Làm cách nào để lưu trữ kết quả từ các biểu mẫu được tạo động trong MongoDb?

  4. Làm thế nào để hiển thị hình ảnh base64 trong phản ứng?

  5. MongoDB:Làm thế nào để cập nhật nhiều tài liệu với một lệnh duy nhất?