- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
Basit alan eşleştirmelerinin ötesine geçerek, PyMongo'da güçlü ve karmaşık sorgular oluşturmayı öğrenelim. Bu sorgular, Python sözlükleri içinde özel sorgu operatörleri kullanılarak tanımlanır.
Sorgu operatörleri daima $
işaretiyle başlar.
Bu operatörler, sayısal veya tarih tabanlı alanlarda büyüklük/küçüklük kontrolü yapmak için kullanılır.
Operatör |
Anlamı |
SQL Karşılığı |
|
Greater Than (Büyüktür) |
|
|
Less Than (Küçüktür) |
|
|
Greater Than or Equal (Büyük Eşittir) |
|
|
Less Than or Equal (Küçük Eşittir) |
|
|
Not Equal (Eşit Değil) |
|
Örnek: Yılı 2023'ten Küçük Olan Kitapları Bulma
# Yıl alanı 2023'ten küçük ($lt) olan belgeleri bul
sorgu = {"yil": {"$lt": 2023}}
print("--- Yılı 2023'ten Küçük Olanlar ($lt) ---")
for kitap in kitaplar_col.find(sorgu):
print(f"Kitap: {kitap['isim']}, Yıl: {kitap['yil']}")Birden fazla sorgu kriterini birleştirmek için kullanılırlar.
Operatör |
Anlamı |
Açıklama |
|
VE |
Tüm koşulların doğru olması gerekir. |
|
VEYA |
Koşullardan en az birinin doğru olması gerekir. |
|
DEĞİL |
Koşulun doğru olmaması gerekir. |
Örnek: $or
Operatörü ile Sorgulama
Yazarı 'Ahmet Bilgin' VEYA Yılı 2022 olan tüm kitapları bulalım:
# '$or' operatörü, sorgu kriterlerinin bir listesini bekler
or_sorgusu = {
"$or": [
{"yazar": "Ahmet Bilgin"},
{"yil": 2022}
]
}
print("\n--- Yazar X VEYA Yıl Y Olanlar ($or) ---")
for kitap in kitaplar_col.find(or_sorgusu):
print(f"Kitap: {kitap['isim']}, Yazar: {kitap['yazar']}, Yıl: {kitap['yil']}")
Örnek: $and Operatörü
ile Sorgulama (Gizli Kullanım)
Aslında, sorgu sözlüğüne art arda yazılan her yeni filtre
otomatik olarak bir $and operatörü
gibi davranır:
# Yazar 'Ahmet Bilgin' VE Yıl 2024 olsunand_sorgusu = {"yazar": "Ahmet Bilgin", "yil": 2024}print("\n--- Yazar X VE Yıl Y Olanlar (Gizli $and) ---")for kitap in kitaplar_col.find(and_sorgusu):print(f"Kitap: {kitap['isim']}")
MongoDB, bir alanda birden fazla değer (diziler) saklamanıza olanak tanır.
Operatör |
Amacı |
|
Belirtilen değerlerden herhangi birine sahip olan belgeleri bul. |
|
Belirtilen değerlerin tümüne sahip olan belgeleri bul. |
Örnek: $in
Operatörü
Yazarı 'Ahmet Bilgin' VEYA 'Ece Sönmez' olan tüm kitapları bulalım:
in_sorgusu = {
"yazar": {
"$in": ["Ahmet Bilgin", "Ece Sönmez"]
}
}
print("\n--- Yazar Listesi İçindeki Kitaplar ($in) ---")
for kitap in kitaplar_col.find(in_sorgusu):
print(f"Yazar: {kitap['yazar']}, Kitap: {kitap['isim']}")
Sorgu sonuçları üzerinde işlem yapmadan önce, onları
sıralamak ve yalnızca belirli bir kısmını almak (limit)
çok yaygın bir uygulamadır.
sort)sort() metodu, sıralanacak alan adı
ve sıralama düzeni (artan için 1,
azalan için -1) parametrelerini alır.
# Yıla göre azalan sırada (-1) sırala
sirali_sonuclar = kitaplar_col.find({}).sort("yil", -1)
print("\n--- Yıla Göre Azalan Sıralama ---")
for kitap in sirali_sonuclar.limit(3): # İlk 3 sonucu gösterelim print(f"Kitap: {kitap['isim']}, Yıl: {kitap['yil']}")
limit) ve Atlamak
(skip)limit(n): Sorgudan en fazla n
adet belge döndürür.
skip(n): İlk n
adet belgeyi atlar (genellikle sayfalama için kullanılır).
# İlk 1 sonucu atla, sonraki 2 sonucu al (Sayfa 2, her sayfada 2 sonuç)
sayfalama_sonuclari = kitaplar_col.find({}).skip(1).limit(2)
print("\n--- Skip ve Limit ile Sayfalama ---")
for kitap in sayfalama_sonuclari:
print(f"Kitap: {kitap['isim']}")
Yorumlar
Yorum Gönder