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

Cách hoạt động của Toán tử cập nhật $ set trong MongoDB

MongoDB $set toán tử cập nhật thay thế giá trị của một trường bằng giá trị được chỉ định.

Nó được sử dụng cùng với các hoạt động cập nhật, chẳng hạn như khi sử dụng update() phương pháp cập nhật tài liệu.

Ví dụ

Giả sử chúng ta có một bộ sưu tập có tên là dogs với tài liệu sau:

{ "_id" : 1, "name" : "Wag", "weight" : 20 }

Và giả sử chúng ta muốn thay đổi trọng lượng của con chó. Chúng tôi có thể chạy update() sau lệnh cập nhật trọng lượng:

db.dogs.update(
  { _id: 1 },
  {
     $set: { weight: 30 }
  }
)

Điều này sẽ dẫn đến kết quả sau:

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

Điều này cho chúng tôi biết rằng một tài liệu đã được khớp và sửa đổi.

Hãy kiểm tra bộ sưu tập:

db.dogs.find()

Kết quả:

{ "_id" : 1, "name" : "Wag", "weight" : 30 }

Chúng ta có thể thấy rằng trọng lượng đã được cập nhật thành giá trị được chỉ định.

Cũng có thể tăng các giá trị theo một số lượng cụ thể, nhưng để làm điều đó, chúng tôi cần sử dụng $inc toán tử thay vì $set .

Nhưng bài viết này là tất cả về $set toán tử, vậy hãy tiếp tục.

Khi trường không tồn tại

Nếu trường bạn đang cố gắng cập nhật không tồn tại, trường đó sẽ được thêm vào tài liệu với giá trị được chỉ định.

Ví dụ:

db.dogs.update(
  { _id: 1 },
  {
     $set: { height: 40 }
  }
)

Đầu ra:

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

Chúng tôi có thể thấy rằng một tài liệu đã được khớp và sửa đổi.

Hãy kiểm tra lại bộ sưu tập.

db.dogs.find()

Kết quả:

{ "_id" : 1, "name" : "Wag", "weight" : 30, "height" : 40 }

Vì vậy, bây giờ tài liệu bao gồm một height trường với giá trị được chỉ định.

Tài liệu được nhúng

Bạn có thể cập nhật các giá trị trong tài liệu nhúng bằng cách sử dụng ký hiệu dấu chấm. Nếu đường dẫn được chỉ định chưa tồn tại, nó sẽ được tạo.

Ví dụ:

db.dogs.update(
  { _id: 1 },
  {
     $set: { 
       "meals.breakfast": "Fish", 
       "meals.lunch": "Chicken", 
       "meals.dinner": "Beef" 
       }
  }
)

Đầu ra:

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

Hãy sử dụng findOne() để trả lại tài liệu:

db.dogs.findOne()

Kết quả:

{
	"_id" : 1,
	"name" : "Wag",
	"weight" : 30,
	"height" : 40,
	"meals" : {
		"breakfast" : "Fish",
		"dinner" : "Beef",
		"lunch" : "Chicken"
	}
}

Chúng tôi có thể thấy rằng tài liệu nhúng đã được thêm vào như đã chỉ định.

Mảng

Bạn có thể cập nhật dữ liệu trong mảng bằng cách sử dụng ký hiệu dấu chấm trong khi chỉ định chỉ mục của phần tử mà bạn muốn cập nhật.

Giả sử chúng ta có tài liệu sau:

{
	"_id" : 1,
	"name" : "Wag",
	"awards" : [
		"Top Dog",
		"Best Dog",
		"Biggest Dog"
	]
}

Hãy cập nhật hai trong số các phần tử của mảng và tên của chú chó.

db.dogs.update({ 
    _id: 1 
    }, { 
        $set: { 
            "name": "Bark",
            "awards.0": "Bottom Dog", 
            "awards.1": "Worst Dog"
        } 
})

Kết quả:

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

Chúng tôi có thể thấy rằng một tài liệu đã được khớp và sửa đổi.

Và bây giờ hãy xem tài liệu.

db.dogs.findOne()

Kết quả:

{
	"_id" : 1,
	"name" : "Bark",
	"awards" : [
		"Bottom Dog",
		"Worst Dog",
		"Biggest Dog"
	]
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Truy vấn các phần tử mảng với Mongo

  2. Làm cách nào để ghi nhật ký các truy vấn được thực thi bởi Spring Data MongoDB?

  3. MongoDB insertOne ()

  4. Dịch <T> có thể truy vấn trở lại IMongoQuery

  5. Mongo sắp xếp theo một điều kiện được tính toán