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

Cách xóa một trường khỏi tài liệu MongoDB ($ unset)

Trong MongoDB, bạn có thể sử dụng $unset toán tử cập nhật trường để xóa hoàn toàn một trường khỏi tài liệu.

$unset toán tử được thiết kế đặc biệt để xóa một trường và giá trị của nó khỏi 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 các tài liệu sau:

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

Và giả sử chúng ta muốn loại bỏ type trường (và giá trị tương ứng của nó) từ tất cả các tài liệu.

Chúng tôi có thể làm điều này:

db.dogs.updateMany(
   { },
   { $unset: { type: "" } }
)

Đầu ra:

{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 }

Điều này cho chúng tôi biết rằng bốn tài liệu đã khớp (vì chúng tôi đã sử dụng một tài liệu truy vấn trống làm đối số đầu tiên) và bốn tài liệu đã được cập nhật.

Bây giờ chúng ta hãy kiểm tra lại bộ sưu tập:

db.dogs.find()

Kết quả:

{ "_id" : 1, "name" : "Wag", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "weight" : 10 }
{ "_id" : 6, "name" : "Fetch", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "weight" : 30 }

Chúng ta có thể thấy rằng type trường đã bị xóa hoàn toàn khỏi mỗi tài liệu.

Lưu ý rằng giá trị được chỉ định trong $unset biểu thức (tức là “”) không ảnh hưởng đến hoạt động.

Xóa nhiều trường

Bạn có thể chỉ định nhiều trường để xóa bằng cách phân tách chúng bằng dấu phẩy.

Ví dụ:

db.dogs.updateMany(
   { },
   { $unset: { name: "", weight: "" } }
)

Đầu ra:

{ "acknowledged" : true, "matchedCount" : 4, "modifiedCount" : 4 }

Kiểm tra bộ sưu tập:

db.dogs.find()

Kết quả:

{ "_id" : 1 }
{ "_id" : 2 }
{ "_id" : 6 }
{ "_id" : 7 }

Bây giờ chỉ có _id các trường còn lại.

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

Bạn có thể sử dụng ký hiệu dấu chấm để xóa các trường khỏi tài liệu nhúng.

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

{
	"_id" : 1,
	"name" : "Wag",
	"details" : {
		"type" : "Dog",
		"weight" : 20,
		"awards" : {
			"Florida Dog Awards" : "Top Dog",
			"New York Marathon" : "Fastest Dog",
			"Sumo 2020" : "Biggest Dog"
		}
	}
}

Và giả sử chúng tôi muốn xóa awards trường từ tài liệu.

Chúng tôi có thể làm điều này:

db.pets.updateMany(
   { _id: 1 },
   { $unset: { "details.awards": "" } }
)

Đầu ra:

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Bây giờ chúng ta hãy kiểm tra tài liệu:

db.pets.findOne()

Kết quả:

{
	"_id" : 1,
	"name" : "Wag",
	"details" : {
		"type" : "Dog",
		"weight" : 20
	}
}

awards trường và giá trị của nó (bản thân nó là một tài liệu được nhúng) đã bị xóa khỏi tài liệu.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose xóa (kéo) tài liệu trong một mảng, không hoạt động với ObjectID

  2. sự khác biệt giữa tổng hợp ($ match) và tìm kiếm, trong MongoDB?

  3. Các tệp đã tạo trong MongoDB

  4. GridFS trong Spring Data MongoDB

  5. Làm cách nào để thực hiện tìm kiếm $ lookup lồng nhau trong MongoDB?