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


Birden fazla kriterle eşleşen belgeleri aramak için MongoDB’de $and operatörünü kullanabilirsiniz.

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

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

Bu özel örnek, alan1’in “merhaba”ya eşit olduğu ve 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: 30, 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: AND operatörünü iki alanla kullanma

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

 db.teams.find({
  " $and ": [
    {" team ": " Spurs "},
    {" points ": { $gte : 22 }}
  ]
})

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

 { _id: ObjectId("6201824afd435937399d6b6c"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }
{ _id: ObjectId("6201824afd435937399d6b6d"),
  team: 'Spurs',
  points: 23,
  rebounds: 9 }

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

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

Aşağıdaki kod, “takım” alanının “Mavs”e eşit olmadığı, “puan” alanındaki değerin 22’den büyük veya ona eşit olduğu ve “rebounds” alanındaki değerin olduğu takımlar koleksiyonundaki tüm belgelerin nasıl bulunacağını gösterir. » alan 7’den küçük:

 db.teams.find({
  " $and ": [
    {" team ": { $ne : " Mavs "}},
    {" points ": { $gte : 22 }},
    {" rebounds ": { $lt : 7 }}
  ]
})

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

 { _id: ObjectId("6201824afd435937399d6b6c"),
  team: 'Spurs',
  points: 25,
  rebounds: 5 }

Koleksiyonda üç kriterin tamamını karşılayan tek belgenin bu olduğunu unutmayın:

  • “Takım” alanı “ Mavs ”e eşit değil
  • “Puan” alanı 22’den büyük veya ona eşit bir değere sahip
  • “Ribauntlar” alanı 7’den küçük bir değere sahip

Not : $and 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: 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