MongoDB Örneklere Göre Sıralamayla Sort() ve Limit() Sorgusu
⚡ Akıllı Özet
MongoDB Sort() ve Limit() sorgu değiştiricileri, bir sorgunun kaç belge döndüreceğini ve hangi sırada döndüreceğini kontrol eder. Limit() yöntemi sonuç sayısını sınırlar, sort() ise belgeleri 1 veya -1 değerlerini kullanarak artan veya azalan sırada düzenler.

Sorgu Değişiklikleri Nedir?
Mongo DB'si sorguları yürütürken daha fazla esneklik sağlamak için 'limit' ve 'Orders' ifadesi gibi sorgu değiştiricileri sağlar. Aşağıdaki sorgu değiştiricilerine bir göz atacağız
MongoDB Sorgu Sonuçlarını Sınırla
Bu değiştirici, bir sorgu için sonuç kümesinde döndürülen belge sayısını sınırlamak için kullanılır. Aşağıdaki örnek bunun nasıl yapılabileceğini gösterir.
db.Employee.find().limit(2).forEach(printjson);
Code açıklama
- Yukarıdaki kod, koleksiyondaki tüm belgeleri döndüren find işlevini alır, ancak daha sonra döndürülen belge sayısını yalnızca 2 ile sınırlamak için limit yan tümcesini kullanır.
Çıktı
Komut başarıyla yürütülürse, aşağıdaki Çıktı gösterilecektir
Çıktı açıkça göstermektedir ki, bir limit değiştirici olduğundan, ObjectId'e göre artan sırada sonuç kümesinin bir parçası olarak en fazla yalnızca 2 kayıt döndürülür.
MongoDB Azalan Düzene Göre Sırala
Koleksiyondaki herhangi bir anahtarın artan veya azalan sırasına göre döndürülecek belgelerin sırasını belirtebilirsiniz. Aşağıdaki örnek bunun nasıl yapılabileceğini göstermektedir.
db.Employee.find().sort({Employeeid:-1}).forEach(printjson)
Code açıklama
- Yukarıdaki kod, koleksiyondaki tüm belgeleri döndüren sıralama işlevini alır, ancak daha sonra kayıtların döndürülme sırasını değiştirmek için değiştiriciyi kullanır. Burada -1, belgeleri Çalışan kimliğinin azalan sırasına göre döndürmek istediğimizi belirtir.
Komut başarıyla yürütülürse, aşağıdaki Çıktı gösterilecektir
Çıktı
Çıktı, döndürülen belgelerin Çalışan Kimliğine göre azalan sırada olduğunu açıkça gösterir.
Artan sıra 1 değeriyle tanımlanır.
MongoDB Artan düzene göre sırala
`sort()` fonksiyonu belgeleri azalan sırada döndürebildiği gibi, artan sırada da döndürebilir. Artan sıra, `sort` nesnesindeki 1 değeriyle tanımlanır. Bu, belgeleri en küçük değerden en büyük değere doğru sıralar; bu da kayıtları en eskiden en yeniye veya A'dan Z'ye doğru listelemek için kullanışlıdır.
Aşağıdaki örnek, her çalışan belgesini Employeeid'ye göre artan sırada sıralar:
db.Employee.find().sort({Employeeid:1}).forEach(printjson)
Sorgu şu şekilde çalışır:
- `find()` fonksiyonu, `Employee` koleksiyonundaki tüm belgeleri getirir.
- sort({Employeeid:1}) ifadesi, sonuçları Employeeid alanına göre en düşük kimlikten en yüksek kimliğe doğru sıralar.
- forEach(printjson) her belgeyi okunabilir JSON formatında yazdırır.
Bu komutu çalıştırdığınızda, belgeler Employeeid'ye göre artan sırada görünür. Artan sıralama varsayılan yöndür, bu nedenle değeri 1 olarak bırakmak, seçilen alanda düşükten yükseğe doğru bir sıralama sağlar. Sonucu tersine çevirmek için, değeri 1'den -1'e değiştirmeniz yeterlidir ve ayrıca yalnızca ilk birkaç sıralanmış kaydı döndürmek için limit() işlevini zincirleme olarak kullanabilirsiniz.
MongoDB Sayfalama için Skip()
skip() metodu şunu belirtir: MongoDB Belirli sayıda belgeyi yok saydıktan sonra geri kalanını döndürmek için kullanılır. Tek başına skip() işlevi nadiren kullanışlıdır, ancak limit() ile birlikte kullanıldığında sayfalama oluşturarak sonuçları birer sayfa halinde görüntülemenizi sağlar.
Aşağıdaki örnek ilk iki çalışanı atlayarak sonraki iki çalışanı döndürür:
db.Employee.find().skip(2).limit(2).forEach(printjson)
Sayfa sayfa gezinme oluşturmak için şu örneği izleyin:
- Sayfa boyutunu belirleyin, örneğin sayfa başına 2 belge.
- Sayfa boyutunu, sayfa numarasından bir çıkarılmış haliyle çarparak atlama değerini elde edin.
- Bu değeri skip() fonksiyonuna, sayfa boyutunu ise limit() fonksiyonuna iletin.
Örneğin, sayfa 1'de skip(0).limit(2), sayfa 2'de skip(2).limit(2) ve sayfa 3'te skip(4).limit(2) kullanılır. Belgelerin sırasının sayfalar arasında sabit kalması için her zaman bir sort() ekleyin. Çok büyük skip değerlerinin büyük koleksiyonlarda yavaş olabileceğini unutmayın, çünkü MongoDB Yine de tarama işlemi devam eder ve atlanan belgeler silinir; aralık tabanlı sayfalama büyük ölçekte daha hızlıdır.
Birden fazla alana göre sırala MongoDB
MongoDB Aynı anda birden fazla alana göre sıralama yapabilirsiniz. Sıralama nesnesindeki alanları öncelik sırasına göre listelersiniz ve MongoDB Önce ilk alana göre sıralama yapar, ardından eşitlik durumunda bir sonraki alanı kullanarak sıralamayı sonlandırır ve bu şekilde devam eder.
Aşağıdaki örnek, çalışanları isme göre artan sırada ve aynı isme sahip çalışanlar için Employeeid'ye göre azalan sırada sıralar:
db.Employee.find().sort({EmployeeName:1, Employeeid:-1}).forEach(printjson)
Sıralama nesnesindeki anahtarların sırası önemlidir: EmployeeName ilk sırada yer aldığı için önce uygulanır. Bu çoklu anahtarlı sıralama, tek bir alana göre gruplandırma yaptığınız ve ardından her grup içinde sıralama yaptığınız raporlar için kullanışlıdır. Büyük koleksiyonlarda en iyi performansı elde etmek için, sıralamada kullanılan alanları ve yönleri eşleştiren bir bileşik indeks oluşturun.


