MongoDB - Endeksleme

Dizinler, sorguların verimli bir şekilde çözülmesini destekler. Dizinler olmadan MongoDB, sorgu ifadesiyle eşleşen belgeleri seçmek için bir koleksiyonun her belgesini taramalıdır. Bu tarama oldukça verimsizdir ve MongoDB'nin büyük miktarda veriyi işlemesini gerektirir.

Dizinler, veri kümesinin küçük bir bölümünü geçişi kolay bir biçimde depolayan özel veri yapılarıdır. Dizin, dizinde belirtildiği gibi alanın değerine göre sıralanmış, belirli bir alanın veya alan kümesinin değerini saklar.

CreateIndex () Yöntemi

Bir dizin oluşturmak için MongoDB'nin createIndex () yöntemini kullanmanız gerekir.

Sözdizimi

Temel sözdizimi createIndex() yöntem aşağıdaki gibidir ().

>db.COLLECTION_NAME.createIndex({KEY:1})

Burada anahtar, üzerinde dizin oluşturmak istediğiniz alanın adıdır ve 1, artan sıralama içindir. Azalan sırada dizin oluşturmak için -1 kullanmanız gerekir.

Misal

>db.mycol.createIndex({"title":1})
{
	"createdCollectionAutomatically" : false,
	"numIndexesBefore" : 1,
	"numIndexesAfter" : 2,
	"ok" : 1
}
>

İçinde createIndex() yöntem, birden çok alanda dizin oluşturmak için birden çok alan geçirebilirsiniz.

>db.mycol.createIndex({"title":1,"description":-1})
>

Bu yöntem aynı zamanda seçenek listesini de kabul eder (isteğe bağlıdır). Liste aşağıdadır -

Parametre Tür Açıklama
arka fon Boole Bir dizin oluşturmanın diğer veritabanı etkinliklerini engellememesi için dizini arka planda oluşturur. Arka planda derlemek için true belirtin. Varsayılan değerfalse.
benzersiz Boole Koleksiyonun, dizin anahtarının veya anahtarların dizindeki mevcut bir değerle eşleştiği belgelerin eklenmesini kabul etmemesi için benzersiz bir dizin oluşturur. Benzersiz bir dizin oluşturmak için true belirtin. Varsayılan değerfalse.
isim dizi Dizinin adı. Belirtilmemişse, MongoDB, dizine alınmış alanların adlarını ve sıralama düzenini birleştirerek bir dizin adı oluşturur.
seyrek Boole Doğruysa, dizin yalnızca belirtilen alana sahip belgelere başvurur. Bu dizinler daha az alan kullanır ancak bazı durumlarda (özellikle sıralar) farklı davranır. Varsayılan değerfalse.
expireAfterSeconds tamsayı MongoDB'nin bu koleksiyondaki belgeleri ne kadar süre saklayacağını kontrol etmek için TTL olarak saniye cinsinden bir değer belirtir.
ağırlıklar belge Ağırlık 1 ile 99.999 arasında değişen bir sayıdır ve alanın puan açısından diğer indeksli alanlara göre önemini ifade eder.
varsayılan dil dizi Metin dizini için, durdurma sözcüklerinin listesini ve kök oluşturucu ve belirteç oluşturucu kurallarını belirleyen dil. Varsayılan değerEnglish.
language_override dizi Bir metin dizini için, belgedeki varsayılan dili geçersiz kılacak dili içeren alanın adını belirtin. Varsayılan değer dildir.

DropIndex () yöntemi

MongoDB'nin dropIndex () yöntemini kullanarak belirli bir dizini bırakabilirsiniz.

Sözdizimi

DropIndex () yönteminin temel sözdizimi aşağıdaki gibidir ().

>db.COLLECTION_NAME.dropIndex({KEY:1})

Burada anahtar, üzerinde dizin oluşturmak istediğiniz dosyanın adıdır ve 1, artan sıralama içindir. Azalan sırada dizin oluşturmak için -1 kullanmanız gerekir.

Misal

> db.mycol.dropIndex({"title":1})
{
	"ok" : 0,
	"errmsg" : "can't find index with key: { title: 1.0 }",
	"code" : 27,
	"codeName" : "IndexNotFound"
}

DropIndexes () yöntemi

Bu yöntem, bir koleksiyondaki birden çok (belirtilen) dizini siler.

Sözdizimi

DropIndexes () yönteminin temel sözdizimi aşağıdaki gibidir () -

>db.COLLECTION_NAME.dropIndexes()

Misal

Adlandırılmış mycol koleksiyonunda aşağıda gösterildiği gibi 2 dizin oluşturduğumuzu varsayalım -

> db.mycol.createIndex({"title":1,"description":-1})

Aşağıdaki örnek, yukarıda oluşturulan mycol dizinlerini kaldırır -

>db.mycol.dropIndexes({"title":1,"description":-1})
{ "nIndexesWas" : 2, "ok" : 1 }
>

GetIndexes () yöntemi

Bu yöntem, koleksiyondaki tüm dizinlerin açıklamasını döndürür.

Sözdizimi

GetIndexes () yönteminin temel sözdizimi aşağıdadır -

db.COLLECTION_NAME.getIndexes()

Misal

Adlandırılmış mycol koleksiyonunda aşağıda gösterildiği gibi 2 dizin oluşturduğumuzu varsayalım -

> db.mycol.createIndex({"title":1,"description":-1})

Aşağıdaki örnek, mycol koleksiyonundaki tüm dizinleri alır -

> db.mycol.getIndexes()
[
	{
		"v" : 2,
		"key" : {
			"_id" : 1
		},
		"name" : "_id_",
		"ns" : "test.mycol"
	},
	{
		"v" : 2,
		"key" : {
			"title" : 1,
			"description" : -1
		},
		"name" : "title_1_description_-1",
		"ns" : "test.mycol"
	}
]
>