MongoDB, NoSQL bir belge veritabanı, güçlü sorgulama yetenekleri sunar. Bu kılavuz, çeşitli alanlarda birden çok değere uyan belgeleri almaya yönelik etkili teknikleri, temel MongoDB operatörlerine odaklanarak ele almaktadır.
İçindekiler
- MongoDB Sorgu Yapısını Anlamak
- $in Operatörünü Kullanmak
- $or ile Koşulları Birleştirmek
- $and ile Koşulları Birleştirmek
- Karmaşık Sorgular Oluşturmak
- Performans Hususları
- SSS
MongoDB Sorgu Yapısını Anlamak
MongoDB sorguları JSON benzeri belgelere sahiptir. Sorgudaki alanlar belgelerinizdeki alanlara karşılık gelir; değerler eşleşme kriterlerini tanımlar. Örneğin, name
alanı “John Doe” olan bir belge bulmak için:
db.collection.find({ name: "John Doe" })
$in Operatörünü Kullanmak
$in
operatörü, tek bir alanı birden çok değere karşı verimli bir şekilde eşleştirir. category
alanına sahip bir products
koleksiyonu düşünün:
db.products.find({ category: { $in: ["Electronics", "Clothing"] } })
Bu, “Electronics” veya “Clothing” kategorilerindeki ürünleri alır.
$or ile Koşulları Birleştirmek
$or
operatörü birden çok koşulu birleştirir; bir belge, en az bir koşul doğruysa eşleşir. “Electronics” kategorisinde veya 100$’ın üzerinde fiyatlı ürünleri bulmak için:
db.products.find({
$or: [
{ category: "Electronics" },
{ price: { $gt: 100 } }
]
})
$and ile Koşulları Birleştirmek
$and
operatörü, tüm koşulların doğru olmasını gerektirir. 50$’ın altında “Electronics” ürünlerini bulmak için:
db.products.find({
$and: [
{ category: "Electronics" },
{ price: { $lt: 50 } }
]
})
Çoğu zaman, $and
örtük olur:
db.products.find({ category: "Electronics", price: { $lt: 50 } })
Karmaşık Sorgular Oluşturmak
Gelişmiş sorgular için operatörleri birleştirin. Örneğin, 50$’dan az maliyetli “Electronics” veya “Clothing” ürünlerini bulun:
db.products.find({
$or: [
{ category: { $in: ["Electronics", "Clothing"] } },
{ price: { $lt: 50 } }
]
})
Performans Hususları
Birçok koşulla $or
kullanmak performansı etkileyebilir. İndeksler sorgu hızını önemli ölçüde iyileştirir. Sık sorgulanan alanlara (örneğin, category
ve price
) indeks oluşturun.
SSS
- S:
$in
‘i birden çok alanla kullanabilir miyim? C: Hayır. Birden çok alan için$or
kullanın. - S: Birçok koşulla
$or
performansı nasıl etkiler? C: Performans düşebilir. Sorguları optimize edin ve indeksler kullanın. - S:
$or
/$and
ile koşullar üzerinde sınırlamalar var mı? C: Kesin bir sınır yok, ancak aşırı büyük sorgular verimsizdir. Sorguları özlü tutun.