MongoDB Tutorials

MongoDB Sorgularında Ustalaşma: Birden Çok Değere Eşleme

Spread the love

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

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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir