MongoDB'de filtreleme ve sıralama operatörleri nasıl kullanılır? Bu makalede örneklerle anlatıyoruz MongoDB'deki $match, $sort, $limit ve $skip operatörlerini keşfedin ve sorgularınızda kullanın
MongoDB, NoSQL veri tabanı sistemleri arasında en popüler olanlarından biridir ve birçok projede kullanılmaktadır. Bu nedenle, MongoDB kullanıcıları filtreleme ve sıralama işlemleri için kullanabilecekleri operatörleri öğrenmek isteyebilirler. Bu makalede, MongoDB'de bulunan filtreleme ve sıralama operatörlerinin detaylı bir şekilde açıklaması ve kullanım örnekleri hakkında bilgi verilecektir.
İlk olarak, filtreleme operatörlerine bakalım. MongoDB'de filtreleme işlemleri için birçok operatör bulunmaktadır. Bu operatörler arasında karşılaştırma operatörleri ve mantıksal operatörler yer alır. Karşılaştırma operatörleri, örneğin büyük-küçük, eşitlik gibi karşılaştırmalar yapmak için kullanılırken, mantıksal operatörler, AND, OR ve NOR gibi operatörler, filtreleme işlemleri için kullanılır.
Bir diğer önemli operatör ise sıralama operatörüdür. MongoDB'de sıralama işlemi yapmak için $sort, $limit, $skip ve $slice operatörleri kullanılabilir. $sort operatörü, verileri belirli bir sıraya göre sıralar. $limit operatörü, sıralamadan sonraki ilk birkaç kaydı seçmek için kullanılırken, $skip ve $slice operatörleri, belirli bir sayıda kaydı alma işlemleri veya istenmeyen kayıtları atlamak için kullanılır.
Bu operatörlerin detaylı kullanım örnekleri, tablolar ve listelerle beraber aşağıda verilmiştir.
Filtreleme Operatörleri
MongoDB'de filtreleme operatörleri, veritabanındaki belirli bir koşula göre kayıtları bulmak için kullanılır. Bu operatörler ile sorgu yaparken belirli koşullar belirleyebilirsiniz. Örneğin, belirli bir değere veya belirli bir aralıkta olan değerleri sorgulayabilirsiniz. Aşağıda MongoDB'de kullanabileceğiniz filtreleme operatörleri ve sorgu yaparken nasıl kullanabileceğiniz anlatılmıştır.
Operatör | Açıklama | Kullanım Örnekleri |
---|---|---|
$eq | Belirtilen değere eşit olan kayıtları bulur. | { age: { $eq: 25 } } |
$ne | Belirtilen değere eşit olmayan kayıtları bulur. | { age: { $ne: 25 } } |
$gt | Belirtilen değerden büyük olan kayıtları bulur. | { age: { $gt: 25 } } |
$gte | Belirtilen değere eşit veya büyük olan kayıtları bulur. | { age: { $gte: 25 } } |
$lt | Belirtilen değerden küçük olan kayıtları bulur. | { age: { $lt: 25 } } |
$lte | Belirtilen değere eşit veya küçük olan kayıtları bulur. | { age: { $lte: 25 } } |
$in | Belirtilen değerlerin bulunduğu kayıtları bulur. | { age: { $in: [25, 30, 35] } } |
$nin | Belirtilen değerlerin bulunmadığı kayıtları bulur. | { age: { $nin: [25, 30, 35] } } |
Ayrıca filtreleme operatörleri için mantıksal operatörler de kullanabilirsiniz. AND, OR ve NOR gibi mantıksal operatörler ile birden fazla koşulu bir arada kullanarak sorgu yapabilirsiniz.
- { $and: [ { age: { $gte: 25 } }, { city: "New York" } ] }
- { $or: [ { age: { $lt: 25 } }, { city: "Los Angeles" } ] }
- { $nor: [ { age: { $lte: 25 } }, { city: "Chicago" } ] }
Yukarıdaki örneklerde $and, $or ve $nor operatörleri kullanılarak sorgulama yapılmıştır. Siz de bu operatörleri kullanarak MongoDB'de sorgu işlemlerini daha etkili hale getirebilirsiniz.
Karşılaştırma Operatörleri
MongoDB veritabanında sorgulama işlemleri, filtreleme ve sıralama operatörleri kullanılarak gerçekleştirilir. Karşılaştırma operatörleri, büyük-küçük veya eşitlik gibi filtreleme işlemleri için kullanılır. MongoDB, bu tür işlemleri gerçekleştirmek için farklı operatörler sunmaktadır.
$eq operatörü, bir değerin eşit olup olmadığını kontrol etmek için kullanılır. Örneğin, aşağıdaki sorgu, adı 'John' olan müşterileri getirecektir.
```db.musteriler.find({ ad: { $eq: 'John' } })```
$gt ve $lt operatörleri, büyük-küçük sorgusu yapmak için kullanılır. Örneğin, aşağıdaki sorgu, yaşları 18'den büyük olan müşterileri getirecektir.
```db.musteriler.find({ yas: { $gt: 18 } })```
Ayrıca, $gte, $lte ve $ne operatörleri gibi diğer karşılaştırma operatörleri de mevcuttur.
Karşılaştırma operatörlerini AND veya OR mantıksal operatörleri ile birleştirerek daha karmaşık sorgular oluşturabilirsiniz. Örneğin, aşağıdaki sorgu, yaşları 18'den büyük ve 'John' adında müşterileri getirecektir.
```db.musteriler.find({ $and: [{ ad: 'John' }, { yas: { $gt: 18 } }]})```
Karşılaştırma operatörleri, filtreleme işlemlerinde kullanılan önemli bir araçtır ve MongoDB'nin sağladığı esnekliği sağlar.
$eq Operatörü
$eq Operatörü
MongoDB'de eşitlik sorgusu yapmak için kullanabileceğiniz operatörlerden biri $eq operatörüdür. Bu operatör, belirli bir alan içinde eşitlik sorgusu yapmak için kullanılır. Örneğin, bir veri kaydında yer alan bir özellik için sadece belirli bir değere sahip kayıtları filtrelemek istediğinizde $eq operatörünü kullanabilirsiniz.
Aşağıdaki örnek, "users" koleksiyonu içindeki "age" alanında 25 değerine sahip dokümanları filtrelemek için $eq operatörünü kullanır:
SQL Query | MongoDB Sorgusu |
---|---|
SELECT * FROM users WHERE age = 25; | db.users.find({ age: { $eq: 25 } }); |
Bu sorgu, "users" koleksiyonundaki "age" alanı 25 olan tüm dokümanları döndürecektir.
Bunun yanında, $eq operatörü farklı veri tiplerindeki eşitlik sorgularında da kullanılabilir. Örneğin, bir dize içindeki özelliklere göre de filtreleme yapabilirsiniz. Aşağıdaki örnek, "users" koleksiyonu içindeki "name" alanında "John" değerine sahip olan dokümanları filtrelemek için $eq operatörünü kullanır:
SQL Query | MongoDB Sorgusu |
---|---|
SELECT * FROM users WHERE name = 'John'; | db.users.find({ name: { $eq: "John" } }); |
Bu sorgu, "users" koleksiyonundaki "name" alanı "John" olan tüm dokümanları döndürecektir.
$eq operatörü, MongoDB'de filtreleme işlemleri sırasında en sık kullanılan operatörlerden biridir.
$gt ve $lt Operatörleri
$gt ve $lt operatörleri, MongoDB'de büyük veya küçük sorguları yapmak için kullanılan operatörlerdir. $gt operatörü, sorgulanan alanın verisinden daha büyük olan kayıtları döndürürken $lt operatörü, sorgulanan alanın verisinden daha küçük olan kayıtları döndürür. Bu operatörler, veri sorgulama işlemlerinde oldukça önemli bir yer edinmiştir.
Bir örnek vermek gerekirse, bir e-ticaret sitesinde müşterilerin verdikleri siparişlerin fiyatları sorgulanabilir. $gt kullanarak, belirli bir fiyatın üzerindeki siparişler listelenebilir. Örneğin, $gt: 50, 50 TL'den daha büyük olan tüm siparişlerin listelenebilmesini sağlar. Benzer şekilde, $lt kullanarak belirli bir fiyatın altındaki siparişler sorgulanabilir.
Sipariş | Fiyat |
---|---|
1 | 30 |
2 | 55 |
3 | 20 |
4 | 70 |
Bu tablodaki siparişleri $gt ve $lt operatörleri ile sorgulamak mümkündür. $gt: 50 kullanarak, fiyatı 50 TL'den büyük olan siparişleri sorgulayabiliriz. Buna göre, siparişler tablosunda, sadece 2 ve 4 numaralı siparişler listeleyecektir. Benzer bir şekilde, $lt: 40 kullanarak, fiyatı 40 TL'den küçük olan siparişleri sorgulayabilir ve sadece 1 ve 3 siparişlerini listeleyebilirsiniz.
Mantıksal Operatörler
MongoDB'de kullanabileceğiniz filtreleme operatörlerinden bir diğeri de mantıksal operatörlerdir. AND, OR ve NOR gibi mantıksal operatörler, birden fazla filtredeki koşulları birleştirmenize ve karmaşık sorgular oluşturmanıza olanak tanır.
AND mantıksal operatörü, iki veya daha fazla sorgu koşulunu birleştirir ve tüm koşulların aynı anda sağlanması gerektiğinde kullanılır. Örneğin, bir öğrenci kayıt sistemimiz varsa, ve öğrencilerin hem "Erkek" hem de "Lise" olmaları gerekiyorsa, sorgumuz şu şekilde görünebilir:
cinsiyet | okul |
---|---|
Erkek | Lise |
OR mantıksal operatörü kullanırsak, öğrencilerin ya "Erkek" ya da "Lise" olması yeterlidir. Bu durumda sorgumuz şu şekilde görünebilir:
$or |
---|
{cinsiyet: "Erkek"} |
{okul: "Lise"} |
Son olarak, NOR mantıksal operatörü, tüm koşulların yanlış olduğu durumlarda kullanılır. Örneğin, bayram tatili sırasında işyerindeki tüm çalışanlar izne ayrılmış olabilirler. Bu durumda, izinde olmayan bir çalışanın listesini almak için sorgumuz şu şekilde görünebilir:
$nor |
---|
{izinde_mi: true} |
Mantıksal operatörler, sorgulama işlemlerini daha esnek ve güçlü hale getirir. Bu operatörlerin kullanımı, veri tabanında daha iyi filtrelemeler yapmanıza ve gereksiz verileri ortadan kaldırmanıza yardımcı olur.
Sıralama Operatörleri
MongoDB, sıralama işlemleri için çeşitli operatörler sunmaktadır. Bu operatörler, verilerin doğru bir şekilde sıralanması için önemlidir. İsterseniz sıralama yaparken hangi yöne doğru sıralama yapmak istediğinizi de belirleyebilirsiniz. Şimdi, MongoDB'de kullanabileceğiniz sıralama operatörlerine ve bu operatörlerle nasıl sıralama yapabileceğinize bakalım.
$sort operatörü, MongoDB'de sıralama yapmak için kullanılan en önemli operatördür. Bu operatör sayesinde, istediğiniz belirli bir alana göre verileri sıralayabilirsiniz. Örneğin, aşağıdaki örnekte "fiyat" alanına göre verileri sıraladık:
db.ürünler.find().sort({fiyat:1})
Burada, "ürünler" koleksiyonundaki verileri "fiyat" alanına göre artan sıralı şekilde getiriyoruz.
Eğer tersten sıralama yapmak isterseniz "-1" değerini kullanmanız yeterlidir:
db.ürünler.find().sort({fiyat:-1})
$limit operatörü, MongoDB'de sıralama sonrası ilk birkaç kaydı seçmek için kullanılan operatördür. Örneğin, aşağıdaki örnekte sıralama yaparak ilk 5 kaydı getirdik:
db.ürünler.find().sort({fiyat:1}).limit(5)
Burada, "ürünler" koleksiyonundaki verileri "fiyat" alanına göre artan sıralı şekilde getiriyoruz ve bunun sonrasında ilk 5 kaydı seçiyoruz.
$skip ve $slice operatörleri de sıralama sonrası istenmeyen kayıtları atlamak ve belirli bir sayıda kaydı almak için kullanılan operatörlerdir. Örneğin, aşağıdaki örnekte sıralama yaparak "ürünler" koleksiyonundaki verilerin 5. kaydından sonraki tüm kayıtları getirdik:
db.ürünler.find().sort({fiyat:1}).skip(4)
Burada, "ürünler" koleksiyonundaki verileri "fiyat" alanına göre artan sıralı şekilde getiriyor ve bunun sonrasında ilk 4 kaydı atlayarak 5. kayıttan sonraki tüm kayıtları getiriyoruz.
Aynı işlemi, $limit operatörü ile birleştirerek de yapabilirsiniz. Örneğin, aşağıdaki örnekte sıralama yaparak "ürünler" koleksiyonundaki verilerin 5. kaydından sonraki ilk 3 kaydı getirdik:
db.ürünler.find().sort({fiyat:1}).skip(4).limit(3)
$sort Operatörü
MongoDB'de verileri sıralamak için kullanabileceğiniz en temel operatörlerden biri olan $sort, verileri belirli bir sıraya göre listelemek için kullanılır. Bu operatörü kullanarak verilerinizi artan veya azalan şekilde listeleyebilir, çoklu sıralama koşulları belirleyebilir ve hatta zaman veya sayısal verilere göre sıralama yapabilirsiniz.
Örneğin, bir e-ticaret web sitesindeki ürün yelpazesini fiyatlarına göre listeleme işlemini ele alalım. İlgili sorguyu oluşturmak için aşağıdaki MongoDB sorgusunu kullanabiliriz:
Sorgu | Açıklama |
---|---|
db.urunler.find().sort({fiyat: 1}) | Verileri fiyatlarına göre artan sırayla listeleyecek sorgu |
db.urunler.find().sort({fiyat: -1}) | Verileri fiyatlarına göre azalan sırayla listeleyecek sorgu |
Bu sorgular, ilgili ürünlerin fiyatlarına göre artan veya azalan şekilde bir sıralama oluşturacaktır. Bunun yanı sıra, $sort operatörünü birden fazla alan için kullanarak ürünleri fiyata ve stok miktarına göre sıralayabilirsiniz:
Sorgu | Açıklama |
---|---|
db.urunler.find().sort({fiyat: 1, stok: -1}) | Verileri fiyatlarına göre artan ve stok miktarına göre azalan şekilde listeleyecek sorgu |
Yukarıdaki sorgu, ürünleri fiyatlarına göre artan ve stok miktarına göre azalan şekilde bir sıralama oluşturacaktır.
Üstelik $sort operatörü, zaman ve sayısal verilere göre de sıralama yapabilir. Örneğin, bir mesajlar koleksiyonundaki mesajları tarihe göre listelemek için aşağıdaki sorguyu kullanabilirsiniz:
Sorgu | Açıklama |
---|---|
db.mesajlar.find().sort({tarih: -1}) | Mesajları tarihlerine göre azalan sırayla listeleyecek sorgu |
$sort operatörü, MongoDB'de filtreleme ve sıralama işlemleri yaparken çok önemli bir rol oynar. Kullanımı oldukça kolaydır ve verilerinizi istediğiniz şekilde listeleyebilirsiniz.
$limit Operatörü
$limit operatörü, MongoDB'de sıralamadan sonra ilk birkaç kaydı seçmek için kullanılır. Veritabanında çok fazla sayıda sonuç varsa, bu operatör sayesinde sorgunun görüntülenecek sonuçların sayısı azaltılabilir. Bu sayede sorgu daha hızlı çalışır ve gereksiz yere kaynak tüketmesi önlenir.
$limit operatörünün kullanımı oldukça basittir. Sorgunuzun sonuna "limit" kelimesi ile beraber rakam girerek belirtmeniz yeterlidir. Örnek olarak, bir müşteri veritabanında müşteri isimlerine göre sorgulama yapıldığını ve sonuçlarda sadece ilk 5 kaydın görüntülenmesi gerektiğini düşünelim. Bu durumda sorgumuz şu şekilde olacaktır:
Sorgu | Açıklama |
---|---|
db.musteriler.find().sort({"isim": 1}).limit(5) | Müşteri veritabanında müşteri ismine göre sıralama yapıp, ilk 5 kaydı getirir. |
Yukarıdaki örnekte, sorgumuz "db.musteriler.find()" ile başlar. "sort()" ile birlikte, müşteri isimlerine göre sıralama yaparız. "limit()" ile sorgumuzun sonunda, ilk 5 kaydı belirterek, yalnızca bu kayıtların gösterilmesini sağlarız.
$limit operatörü, diğer operatörlerle birlikte de kullanılabilir. Örneğin, "skip" operatörü ile belirli kayıtları atlayıp, sonra kalan ilk 5 kaydı göstermek mümkündür.
Sorgu | Açıklama |
---|---|
db.musteriler.find().sort({"isim": 1}).skip(2).limit(5) | Müşteri veritabanında müşteri ismine göre sıralama yapıp, ilk 2 kaydı atlayıp kalan ilk 5 kaydı getirir. |
Yukarıdaki örnekte, ilk iki kaydı atlamak ve sonraki ilk 5 kaydı görüntülemek için $skip ve $limit operatörleri birlikte kullanılmıştır.
Genel olarak, $limit operatörü, büyük verilerde sorgu sonuçlarının hızlı bir şekilde elde edilmesinde oldukça yararlıdır. Ancak, sorgu sonuçlarının tamamını görüntülemek gerektiğinde de $limit operatörünü kaldırmak veya değerini artırmak gerekir.
$skip ve $slice Operatörleri
MongoDB'de sıralama işlemlerinde oldukça kullanışlı olan $skip ve $slice operatörleri, sıralama işleminden sonra istenmeyen kayıtları atlama ve belirli bir sayıda kaydı alma gibi işlemler için kullanılır.
Örneğin, bir veritabanında 100 adet kullanıcının kaydı olsun ve bu kayıtlar isme göre sıralansın. Bu veritabanında ilk 10 kullanıcı kaydını almamız gerektiğinde $slice operatörünü kullanabiliriz. Aşağıdaki örnekte $slice operatörünün kullanımını görebilirsiniz.
db.users.find().sort({name: 1}).limit(10).slice(0,10);
Bu kullanımda öncelikle sıralama işlemi yapılır, ardından ilk 10 kayıt alınır. $slice operatörü kullanılmadan önce $limit operatörünün kullanımı da oldukça faydalıdır. Örneğin, ilk 10 kayıt yerine sadece ilk 3 kaydı almak istediğimizde aşağıdaki şekilde kullanabiliriz.
db.users.find().sort({name: 1}).limit(3).slice(0,3);
$slice operatörünün yanı sıra $skip operatörü de sıralamadan sonra belirli bir sayıda kaydı atlamak için kullanılır. Örneğin, ilk 10 kayıt yerine 11-20 arası kayıtları almak istediğimizde aşağıdaki şekilde kullanabiliriz.
db.users.find().sort({name: 1}).skip(10).limit(10);
Burada öncelikle 10 kayıt atlanır ve ardından belirli bir limitte kayıtlar alınır. Hem $skip hem de $slice operatörleri birlikte kullanılabilir.
Sonuç olarak MongoDB'de sıralama işlemlerinde $skip ve $slice operatörleri oldukça kullanışlıdır ve sorgulama işlemlerini daha kolay hale getirir. İhtiyaca göre hem tek başına hem de birlikte kullanılabilirler.