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.

  • 🔢 Sonuçları Sınırla: limit() metodu, bir sorgunun döndüreceği belge sayısını sınırlandırır; örneğin limit(2) iki kayıt döndürür.
  • ⬇️ Azalan Sırala: sort({field:-1}) komutu, seçilen alana göre belgeleri azalan sırada döndürür.
  • ⬆️ Artan Sırala: sort({field:1}) komutu belgeleri artan sırada döndürür; bu aynı zamanda varsayılan yöndür.
  • ⏭️ Sayfalama için atla: `skip()` metodu belirli sayıda belgeyi yok sayar ve `limit()` metoduyla birlikte sayfalama oluşturur.
  • 🧷 Çoklu Anahtarlar: `sort()` fonksiyonu birden fazla alan kabul eder, ilk anahtara göre sıralama yapar ve eşitlik durumunda bir sonrakine göre sıralamayı sonlandırır.
  • 🖨️ Readable Çıktı: forEach(printjson) döngüsünü zincirleme olarak kullanmak, döndürülen her belgeyi temiz JSON formatında yazdırır.

MongoDB Sort() ve Limit() Sorgusu

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

MongoDB Sorgu Sonuçlarını Sınırla

Çı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ı

MongoDB Azalan Düzene Göre Sırala

Çı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:

  1. Sayfa boyutunu belirleyin, örneğin sayfa başına 2 belge.
  2. Sayfa boyutunu, sayfa numarasından bir çıkarılmış haliyle çarparak atlama değerini elde edin.
  3. 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.

SSS

sort() fonksiyonu olmadan, MongoDB Belgeleri doğal sırada döndürür; bu genellikle diskteki sıralarını yansıtır ve garanti edilmez. Tahmin edilebilir bir sıralama için, _id gibi bir alana her zaman açık bir sort() ekleyin.

mantıken, MongoDB Sıralama sırasına bakılmaksızın, her zaman `sort()` fonksiyonu `limit()` fonksiyonundan önce uygulanır. Bu, `limit()` fonksiyonunun sıralanmış sonucun en üstteki belgelerini döndürdüğü, rastgele bir alt kümeyi döndürmediği ve bu alt kümenin daha sonra sıralanmadığı anlamına gelir.

Büyük sonuç kümelerini indeks olmadan sıralamak, bellek sınırını aştığında başarısız olan bellek içi bir sıralama işlemine yol açar. Sıralama alanında bir indeks oluşturmak, MongoDB Sıralı sonuçları verimli bir şekilde döndürün.

Yapay zeka, 'en yeni beş çalışan' gibi basit bir isteği, doğru yön ve sayımla bir find().sort().limit() sorgusuna dönüştürebilir. Ayrıca, yeni başlayanların kalıbı öğrenmesi için her bir değiştiriciyi de açıklar.

Evet. Yapay zeka, sorgu planını inceleyebilir, bellek içi sıralamaları tespit edebilir ve sıralamayı desteklemek için gereken dizini önerebilir. Bu, geliştiricilerin sıralama işlemlerini hızlandırmasına ve büyük koleksiyonlardaki sorguları sınırlamasına yardımcı olur.

Bu yazıyı şu şekilde özetleyin: