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"
}
]
>