Mongodb: sorgularda or operatörü ($or) nasıl kullanılır?


Birden fazla kriterden herhangi biriyle eşleşen belgeleri bulmak için MongoDB’de $or operatörünü kullanabilirsiniz.

Bu operatör aşağıdaki temel sözdizimini kullanır:

 db.myCollection.find({
  “ $or ”: [
    {" field1 ": " hello "},
    {" field2 ": { $gte : 10 }}
  ]
})

Bu özel örnek, alan1’in “merhaba”ya eşit olduğu veya alan2’nin 10’dan büyük veya ona eşit bir değere sahip olduğu myCollection adlı koleksiyondaki tüm belgeleri arar.

Aşağıdaki örnekler, bu sözdiziminin , aşağıdaki belgelere sahip bir koleksiyon ekibiyle pratikte nasıl kullanılacağını gösterir :

 db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8})
db.teams.insertOne({team: " Mavs ", points: 35, rebounds: 12})
db.teams.insertOne({team: " Spurs ", points: 20, rebounds: 7})
db.teams.insertOne({team: " Spurs ", points: 25, rebounds: 5})
db.teams.insertOne({team: " Spurs ", points: 23, rebounds: 9})

Örnek 1: OR operatörünü iki alanla kullanma

Aşağıdaki kod, “takım” alanının “Spurs”a eşit olduğu veya “puan” alanının değerinin 31’den büyük veya eşit olduğu takım koleksiyonundaki tüm belgelerin nasıl bulunacağını gösterir:

 db.teams.find({
  “ $or ”: [
    {" team ": " Spurs "},
    {" points ": { $gte : 31 }}
  ]
})

Bu sorgu aşağıdaki belgeleri döndürür:

 { _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("62018750fd435937399d6b72"),
  team: 'Spurs',
  points: 23,
  rebounds: 9 }

Çıktıdaki her belgenin takım alanında “Spurs” veya puan alanında 31’den büyük veya ona eşit bir değer içerdiğini unutmayın.

Örnek 2: OR operatörünü ikiden fazla alanla kullanma

Aşağıdaki kod, “takım” alanının “Mavs”e eşit olduğu veya “puan” alanının değerinin 25’ten büyük veya ona eşit olduğu veya “ribaund” alanının değerinin olduğu takımlar koleksiyonundaki tüm belgelerin nasıl bulunacağını gösterir. 8’den küçük:

 db.teams.find({
  “ $or ”: [
    {" team ": " Mavs "},
    {" points ": { $gte : 25 }},
    {" rebounds ": { $lt : 8 }}
  ]
})

Bu sorgu aşağıdaki belgeyi döndürür:

 { _id: ObjectId("62018750fd435937399d6b6e"),
  team: 'Mavs',
  points: 30,
  rebounds: 8 }
{ _id: ObjectId("62018750fd435937399d6b6f"),
  team: 'Mavs',
  points: 35,
  rebounds: 12 }
{ _id: ObjectId("62018750fd435937399d6b70"),
  team: 'Spurs',
  points: 20,
  rebounds: 7 }
{ _id: ObjectId("62018750fd435937399d6b71"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }

Bu belgelerin her birinin üç kriterden birini veya daha fazlasını karşıladığını unutmayın:

  • “Takım” alanı “ Mavs ”a eşittir
  • “Puan” alanı 25’ten büyük veya ona eşit bir değere sahiptir
  • “Ribauntlar” alanı 8’den küçük bir değere sahip

Not : $or işlevine ilişkin tüm belgeleri burada bulabilirsiniz.

Ek kaynaklar

Aşağıdaki eğitimlerde MongoDB’de diğer yaygın işlemlerin nasıl gerçekleştirileceği açıklanmaktadır:

MongoDB: Sorgularda AND operatörü nasıl kullanılır?
MongoDB: Alanın bir dize içerip içermediği nasıl kontrol edilir
MongoDB: “NO IN” sorgusu nasıl kullanılır?
MongoDB: Belirli bir alanda “boş değil” nasıl aranır

Yorum ekle

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir