Mongodb: “deği̇l” sorgusu nasıl kullanılır?


Belirli bir alanın değerinin belirli bir değerler listesinde olmadığı tüm belgeleri bulmak için aşağıdaki sözdizimini kullanabilirsiniz:

 db.collection.find({field1: { $nin : [" value1 ", " value2 ", " value3 "]}}) 

Bu özel sorgu, alan 1’in değerinin değer1, değer2 veya değer3’e eşit olmadığı tüm belgeleri arar.

Aşağıdaki örnekler bu sözdiziminin pratikte nasıl kullanılacağını göstermektedir.

Örnek 1: Değer içeren “NOT IN” sorgusu

Aşağıdaki belgelere sahip bir tahsilat ekibimiz olduğunu varsayalım:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

“Takım” alanının “Roketler” değerine eşit olmadığı tüm belgeleri bulmak için aşağıdaki kodu kullanabiliriz:

 db.teams.find({team: { $nin : [" Rockets "]}}) 

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

 { _id: ObjectId("619527e467d6742f66749b72"),
  team: 'Cavs',
  position: 'Guard',
  points: 33 }

{ _id: ObjectId("619527e467d6742f66749b6e"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
  team: 'Mavs',
  position: 'Guard',
  points: 22 }

Döndürülen belgelerin yalnızca “ekip” alanının “Roketler”e eşit olmadığı belgeler olduğunu unutmayın.

Örnek 2: Değerler listesiyle “NON IN” sorgusu

Aşağıdaki belgelere sahip bir tahsilat ekibimiz olduğunu varsayalım:

 db.teams.insertOne({team: " Mavs ", position: " Guard ", points: 31 })
db.teams.insertOne({team: " Spurs ", position: " Guard ", points: 22 })
db.teams.insertOne({team: " Rockets ", position: " Center ", points: 19 })
db.teams.insertOne({team: " Warriors ", position: " Forward ", points: 26 })
db.teams.insertOne({team: " Cavs ", position: " Guard ", points: 33 })

“Team” alanının “Rockets” veya “Cavs” değerine eşit olmadığı tüm belgeleri bulmak için aşağıdaki kodu kullanabiliriz:

 db.teams.find({team: { $nin : [" Rockets ", " Cavs "]}}) 

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

 { _id: ObjectId("619527e467d6742f66749b6e"),
  team: 'Mavs',
  position: 'Guard',
  points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
  team: 'Mavs',
  position: 'Guard',
  points: 22 }

Geri gönderilen belgelerin yalnızca “takım” alanının “Rockets” veya “Cavs” ile aynı olmadığı belgeler olduğunu unutmayın.

Not : $nin 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: “Beğen” normal ifadesiyle nasıl sorgulama yapılır?
MongoDB: Alanın bir dize içerip içermediği nasıl kontrol edilir
MongoDB: Koleksiyona yeni bir alan nasıl eklenir?
MongoDB: Her belgeden bir alan nasıl kaldırılır

Yorum ekle

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