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

MongoDB dropIndexes ()

Trong MongoDB, dropIndexes() phương pháp này cho phép bạn loại bỏ một hoặc nhiều chỉ mục khỏi một bộ sưu tập.

Để giảm một chỉ mục, hãy chuyển tên của chỉ mục hoặc tài liệu định nghĩa / đặc tả của nó. Nếu đó là chỉ mục văn bản, bạn chỉ có thể chỉ định tên chỉ mục.

Để bỏ nhiều chỉ mục, hãy chuyển tên chỉ mục vào một mảng.

Để loại bỏ tất cả các chỉ mục (ngoại trừ _id index), không chuyển bất kỳ đối số nào.

Chỉ mục mẫu

Giả sử chúng ta có một bộ sưu tập có tên là pets . Chúng ta có thể sử dụng getIndexes() để xem nó có những chỉ mục nào:

db.pets.getIndexes()

Kết quả:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"type" : 1
		},
		"name" : "type_1"
	},
	{
		"v" : 2,
		"key" : {
			"name" : 1
		},
		"name" : "name_1",
		"hidden" : true
	},
	{
		"v" : 2,
		"key" : {
			"weight" : -1
		},
		"name" : "weight_-1"
	}
]

Trong trường hợp này, chúng tôi có bốn chỉ mục. Cái đầu tiên là chỉ mục mặc định cho _id đồng ruộng. Chỉ mục này được tạo tự động khi bạn tạo một bộ sưu tập và không thể bỏ chỉ mục này.

Ba chỉ mục khác có thể bị loại bỏ.

Thả một chỉ mục duy nhất

Để giảm một chỉ mục, hãy chuyển tên chỉ mục hoặc tài liệu đặc tả của nó.

Ví dụ:

db.pets.dropIndexes("weight_-1")

Trong trường hợp này, chúng tôi đang chuyển tên chỉ mục.

Chạy điều đó dẫn đến kết quả sau:

{ "nIndexesWas" : 4, "ok" : 1 }

Điều này cho chúng tôi biết rằng chỉ số đã bị giảm.

Ngoài ra, chúng tôi có thể đã loại bỏ chỉ mục bằng cách chuyển tài liệu đặc tả của nó:

db.pets.dropIndexes( { "weight" : -1 } )

Thả nhiều chỉ mục

Nếu bạn muốn bỏ nhiều chỉ mục, nhưng không phải tất cả các chỉ mục, hãy chuyển tên chỉ mục vào một mảng.

Ví dụ:

db.pets.dropIndexes( [ "type_1", "name_1" ])

Kết quả:

{ "nIndexesWas" : 3, "ok" : 1 }

Ở giai đoạn này, hãy kiểm tra lại danh sách các chỉ mục của chúng tôi:

db.pets.getIndexes()

Kết quả:

[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]

Như dự kiến, ba chỉ mục đã bị xóa và chỉ còn lại một chỉ mục (và không thể xóa được).

Bỏ tất cả các chỉ mục

Bạn có thể loại bỏ tất cả các chỉ mục bằng cách gọi dropIndexes() phương thức không có bất kỳ đối số nào.

Đối với ví dụ này, hãy thả các chỉ mục vào bộ sưu tập có tên là products . Bộ sưu tập này có bốn chỉ mục như sau:

db.products.getIndexes()

Kết quả:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"product.$**" : 1
		},
		"name" : "product.$**_1"
	},
	{
		"v" : 2,
		"key" : {
			"sizes" : 1
		},
		"name" : "sizes_1"
	},
	{
		"v" : 2,
		"key" : {
			"stock" : -1
		},
		"name" : "stock_-1"
	}
]

Bây giờ, hãy bỏ tất cả các chỉ mục:

db.products.dropIndexes()

Kết quả:

{
	"nIndexesWas" : 4,
	"msg" : "non-_id indexes dropped for collection",
	"ok" : 1
}

Như thông báo ám chỉ, tất cả các chỉ mục đều bị xóa ngoại trừ _id mục lục. Không thể bỏ chỉ mục này.

Hãy kiểm tra lại các chỉ mục.

db.products.getIndexes()

Kết quả:

[ { "v" : 2, "key" : { "_id" : 1 }, "name" : "_id_" } ]

Như mong đợi, _id chỉ mục là chỉ mục duy nhất còn lại.

dropIndexes() phương thức là một trình bao bọc xung quanh dropIndexes lệnh.

Tài liệu MongoDB

Xem tài liệu MongoDB để biết thêm thông tin về dropIndexes() phương pháp.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Đặt bộ chuyển đổi MongoDb theo lập trình

  2. Cách lập mô hình hệ thống bỏ phiếu thích với MongoDB

  3. Cách tạo, hiển thị và thả Bộ sưu tập trong MongoDB

  4. Nhận tổng số tài liệu với MongoDB khi sử dụng giới hạn

  5. Làm thế nào để sử dụng dữ liệu mùa xuân mongo @CompoundIndex với các tập hợp con?