MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

3 Cara Menyembunyikan Indeks dari Paket Kueri di MongoDB

Mulai dari MongoDB 4.4, sekarang kita dapat menyembunyikan indeks dari paket kueri. Hal ini memungkinkan kami untuk mengevaluasi dampak potensial dari penurunan indeks tanpa benar-benar menjatuhkan indeks.

Jika menyembunyikannya berdampak negatif, kami dapat menampilkan file index. Ini menyelamatkan kita dari keharusan menjatuhkan indeks, lalu membuatnya kembali.

Di bawah ini adalah 3 cara untuk menyembunyikan indeks di MongoDB.

The hideIndex() Metode

db.collection.hideIndex() metode melakukan persis seperti yang dijanjikan – menyembunyikan indeks (dari perencana kueri).

Contoh:

db.pets.hideIndex("idx_weight_-1")

Keluaran:

{ "hidden_old" : false, "hidden_new" : true, "ok" : 1 }

Itu menyembunyikan indeks yang disebut idx_weight_-1 pada pets koleksi. Sebagai alternatif, kami dapat memberikan pola kunci untuk indeks alih-alih nama.

Keluaran dari hideIndex() metode menampilkan nilai lama untuk hidden bidang (dalam hal ini false ) dan nilai baru (dalam hal ini true ).

Namun, jika kami menyembunyikan indeks yang sudah disembunyikan (atau menampilkan yang sudah tidak disembunyikan), ini tidak akan ditampilkan, dan kami hanya mendapatkan yang berikut:

{ "ok" : 1 }

Bagaimanapun, indeks sekarang disembunyikan.

hideIndex() metode sebenarnya adalah pembungkus untuk collMod perintah administrasi (di bawah).

collMod Perintah

collMod perintah administrasi memungkinkan kita untuk menambahkan opsi ke koleksi atau mengubah definisi tampilan.

Kita dapat menggunakannya untuk menyembunyikan indeks dengan melewatkan hidden: true .

Contoh:

db.runCommand( {
   collMod: "pets",
   index: {
      name: "idx_weight_-1",
      hidden: true
   }
} )

Hasil:

{ "hidden_old" : false, "hidden_new" : true, "ok" : 1 }

Ini mengembalikan dokumen yang sama dengan hideIndex() kembali.

Mirip dengan hideIndex() , Anda memiliki opsi untuk menentukan nama indeks atau pola kuncinya.

Berikut ini contoh penggunaan pola kunci:

db.runCommand( {
   collMod: "pets",
   index: {
      keyPattern: { weight : -1 },
      hidden: true
   }
} )

Dalam hal ini, indeks didefinisikan menggunakan { weight : -1 } , sehingga definisi ini dapat digunakan sebagai pengganti nama indeks.

Untuk memverifikasi ini, kita dapat menggunakan getIndexes() untuk melihat definisi indeks:

db.pets.getIndexes()

Hasil:

[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_"
	},
	{
		"v" : 2,
		"key" : {
			"weight" : -1
		},
		"name" : "idx_weight_-1",
		"hidden" : true
	}
]

Kami juga dapat menampilkan indeks dengan melewatkan hidden: false .

Buat Indeks Tersembunyi

Cara ketiga untuk menyembunyikan indeks adalah dengan membuatnya sebagai indeks tersembunyi.

Untuk melakukannya, gunakan hidden: true sebagai salah satu opsi saat Anda membuat indeks.

Contoh:

db.pets.createIndex( 
    { type: 1 },
    { hidden: true }
)

Keluaran:

{
	"createdCollectionAutomatically" : false,
	"numIndexesBefore" : 2,
	"numIndexesAfter" : 3,
	"ok" : 1
}

Sekarang mari kita panggil getIndexes() lagi untuk memeriksa indeks tersembunyi kami yang baru dibuat:

db.pets.getIndexes()

Hasil:

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

Kita dapat melihat bahwa itu telah dibuat dengan "hidden": true .

Tidak Dapat Menyembunyikan Indeks? Periksa Setelan ini.

mongod featureCompatibilityVersion minimal harus 4.4 sebelum Anda dapat menyembunyikan indeks. Namun, setelah disembunyikan, indeks akan tetap tersembunyi bahkan dengan featureCompatibilityVersion setel ke 4.2 pada binari MongoDB 4.4.

Anda dapat memeriksa featureCompatibilityVersion setting dengan kode berikut:

db.adminCommand( 
    { 
        getParameter: 1, 
        featureCompatibilityVersion: 1 
    } 
)

Anda dapat mengaturnya menggunakan setFeatureCompatibilityVersion perintah:

db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )

setFeatureCompatibilityVersion perintah harus dijalankan di admin basis data.

Perhatikan juga, Anda tidak dapat menyembunyikan _id indeks.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cara deserialize objek BsonDocument kembali ke kelas

  2. mongodb tidak dapat terhubung ke server

  3. Penggunaan opsiFindAndModify tidak didukung

  4. Memahami batas ukuran Dokumen MongoDB BSON

  5. Menyortir pada Beberapa bidang mongo DB