Dizinler herhangi bir veritabanında çok önemlidir ve MongoDB'de durum farklı değil. Dizinlerin kullanılmasıyla MongoDB'de sorgu yapmak daha verimli hale geliyor.
Dizin içermeyen binlerce belgeden oluşan bir koleksiyonunuz varsa ve belirli belgeleri bulmak için sorguluyorsanız, bu durumda MongoDB'nin belgeleri bulmak için tüm koleksiyonu taraması gerekir. Ancak dizinleriniz olsaydı, MongoDB, koleksiyonda aranması gereken belge sayısını sınırlamak için bu dizinleri kullanırdı.
Dizinler, koleksiyon verilerinin kısmi bir bölümünü depolayan özel veri kümeleridir. Veriler kısmi olduğu için bu verileri okumak daha kolay hale geliyor. Bu kısmi küme, belirli bir alanın değerini veya alanın değerine göre sıralanmış bir alan kümesini depolar.
Bu eğitimde öğreneceksiniz -
- Dizinlerin Etkisini Anlamak
- Dizinler Nasıl Oluşturulur: createIndex ()
- Dizinler Nasıl Bulunur: getindexes ()
- Dizinler Nasıl Bırakılır: dropindex ()
Dizinlerin Etkisini Anlamak
Şimdi, girişten itibaren indekslerin sorgular için iyi olduğunu gördük, ancak çok fazla indekse sahip olmak, Ekle, Sil ve Güncelle gibi diğer işlemleri yavaşlatabilir.
Belgeler üzerinde sık sık ekleme, silme ve güncelleme işlemleri yapılıyorsa, bu durumda dizinlerin sık sık değiştirilmesi gerekir, bu da koleksiyon için sadece bir ek yük olur.
Aşağıdaki örnek, bir koleksiyonda hangi alan değerlerinin bir dizin oluşturabileceğine dair bir örnek göstermektedir. Bir dizin, koleksiyondaki tek bir alanı temel alabilir veya koleksiyondaki birden çok alanı temel alabilir.
Aşağıdaki örnekte Employeeid "1" ve EmployeeCode "AA", koleksiyondaki dokümanları indekslemek için kullanılır. Dolayısıyla, bir sorgu araması yapıldığında, bu dizinler koleksiyondaki gerekli belgeleri hızlı ve verimli bir şekilde bulmak için kullanılacaktır.
Dolayısıyla, arama sorgusu EmployeeCode "AA" 'ya dayalı olsa bile, bu belge döndürülür.
Dizinler Nasıl Oluşturulur: createIndex ()
MongoDB'de bir Index oluşturma " createIndex " yöntemi kullanılarak yapılır .
Aşağıdaki örnek, koleksiyona dizinin nasıl ekleneceğini gösterir. "Employeeid" ve "EmployeeName" Alan adlarına sahip aynı Çalışan koleksiyonumuza sahip olduğumuzu varsayalım.
db.Employee.createIndex({Employeeid:1})
Kod Açıklaması:
- CREATEINDEX yöntemi belgenin "EmployeeID" dayalı bir dizin oluşturmak için kullanılır.
- '1' parametresi, dizin "Employeeid" Alan değerleriyle oluşturulduğunda, bunların artan sırada sıralanması gerektiğini belirtir. Lütfen bunun MongoDB tarafından koleksiyonda otomatik olarak oluşturulan _id alanından (koleksiyondaki her belgeyi benzersiz şekilde tanımlamak için kullanılır) farklı olduğunu unutmayın. Belgeler artık _id alanına değil Employeeid'e göre sıralanacaktır.
Komut başarıyla yürütülürse, aşağıdaki Çıktı gösterilecektir:
Çıktı:
- NumIndexesBefore: 1, komut çalıştırılmadan önce dizinlerde bulunan Alan değerlerinin (koleksiyondaki gerçek alanlar) sayısını gösterir. Her koleksiyonun, aynı zamanda dizinin Alan değeri olarak da sayılan _id alanına sahip olduğunu unutmayın. _İd dizin alanı, başlangıçta oluşturulduğunda koleksiyonun bir parçası olduğundan, numIndexesBefore'nin değeri 1'dir.
- NumIndexesAfter: 2, komut çalıştırıldıktan sonra dizinlerde bulunan Alan değerlerinin sayısını gösterir.
- Burada "ok: 1" çıktısı işlemin başarılı olduğunu ve yeni dizinin koleksiyona eklendiğini belirtir.
Yukarıdaki kod, bir alan değerine dayalı olarak bir dizinin nasıl oluşturulacağını gösterir, ancak birden çok alan değerine dayalı olarak bir dizin de oluşturulabilir.
Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir;
db.Employee.createIndex({Employeeid:1, EmployeeName:1])
Kod Açıklaması:
- CreateIndex yöntemi artık birden çok Alan değerini hesaba katar ve bu da artık dizinin "ÇalışanKimliği" ve "ÇalışanAdı" temelinde oluşturulmasına neden olur. Employeeid: 1 ve EmployeeName: 1, dizinin bu 2 alan değerinde oluşturulması gerektiğini belirtir ve: 1, artan sırada olması gerektiğini belirtir.
Dizinler Nasıl Bulunur: getindexes ()
MongoDB'de bir Dizin bulmak "getIndexes" yöntemi kullanılarak yapılır .
Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir;
db.Employee.getIndexes()
Kod Açıklaması:
- GetIndexes yöntemi, bir koleksiyondaki tüm dizinleri bulmak için kullanılır.
Komut başarıyla yürütülürse, aşağıdaki Çıktı gösterilecektir:
Çıktı:
- Çıktı, koleksiyonda _id alanı ve diğerinin Employee id alanı olan 2 dizin olduğunu gösteren bir belge döndürür. : 1, dizindeki alan değerlerinin artan sırada oluşturulduğunu belirtir.
Dizinler Nasıl Bırakılır: dropindex ()
MongoDB'de bir dizinin kaldırılması dropIndex yöntemi kullanılarak yapılır.
Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir;
db.Employee.dropIndex(Employeeid:1)
Kod Açıklaması:
- DropIndex yöntemi, Dizinden kaldırılması gereken gerekli Alan değerlerini alır.
Komut başarıyla yürütülürse, aşağıdaki Çıktı gösterilecektir:
Çıktı:
- NIndexesWas: 3, komut çalıştırılmadan önce dizinlerde bulunan Alan değerlerinin sayısını gösterir. Her koleksiyonun, aynı zamanda dizinin Alan değeri olarak da sayılan _id alanına sahip olduğunu unutmayın.
- Ok: 1 çıktısı, işlemin başarılı olduğunu ve "Employeeid" alanının dizinden kaldırıldığını belirtir.
Koleksiyondaki tüm dizinleri bir kerede kaldırmak için dropIndexes komutu kullanılabilir.
Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.
db.Employee.dropIndex()
Kod Açıklaması:
- DropIndexes yöntemi, _id dizini dışındaki tüm dizinleri bırakacaktır.
Komut başarıyla yürütülürse, aşağıdaki Çıktı gösterilecektir:
Çıktı:
- NIndexesWas: 2, komut çalıştırılmadan önce dizinlerde bulunan Alan değerlerinin sayısını gösterir.
- Her koleksiyonun aynı zamanda dizine bir Alan değeri olarak sayılan _id alanına sahip olduğunu ve MongoDB tarafından kaldırılmayacağını ve bu mesajın bunu gösterdiğini tekrar unutmayın.
- Ok: 1 çıkışı, işlemin başarılı olduğunu belirtir.
Özet
- Bir koleksiyondaki belgelerin daha hızlı ve verimli bir şekilde aranması için dizinlerin tanımlanması önemlidir.
- CreateIndex yöntemi kullanılarak dizinler oluşturulabilir. Dizinler yalnızca bir alan veya birden çok alan değeri üzerinde oluşturulabilir.
- Dizinler getIndexes yöntemi kullanılarak bulunabilir.
- Dizinler, tek dizinler için dropIndex kullanılarak veya tüm dizinleri kaldırmak için dropIndexes kullanılarak kaldırılabilir.