Mongodb: alanın mevcut olup olmadığı nasıl kontrol edilir


MongoDB’deki bir koleksiyonda bir alanın mevcut olup olmadığını kontrol etmek için aşağıdaki yöntemleri kullanabilirsiniz:

Yöntem 1: Alanın mevcut olup olmadığını kontrol edin

 db.myCollection.find({ " myField ": { $exists : true } })

Bu yöntem, myCollection adlı koleksiyonda “myField” öğesinin mevcut olup olmadığını kontrol eder. Eğer öyleyse, alan adını içeren tüm belgeleri döndürür. Olmazsa hiçbir şey döndürmez.

Yöntem 2: Katıştırılmış alanın mevcut olup olmadığını kontrol edin

 db.myCollection.find({ " myField.embeddedField ": { $exists : true } })

Bu yöntem, “myField” alanındaki “embeddedField” alan adının myCollection adlı koleksiyonda mevcut olup olmadığını kontrol eder. Eğer öyleyse, alan adını içeren tüm belgeleri döndürür. Olmazsa hiçbir şey döndürmez.

Aşağıdaki örnekler, aşağıdaki belgelere sahip bir toplama ekibiyle her yöntemin pratikte nasıl kullanılacağını gösterir :

 db.teams.insertOne({team: "Mavs", class: {conf: "Western", div: "A"}, points: 31 })
db.teams.insertOne({team: "Spurs", class: {conf: "Western", div: "A"}, points: 22 })
db.teams.insertOne({team: "Jazz", class: {conf: "Western", div: "B"}, points: 19 })
db.teams.insertOne({team: "Celtics", class: {conf: "Eastern", div: "C"}, points: 26 })

Örnek 1: Alanın mevcut olup olmadığını kontrol edin

Aşağıdaki kod, ekipler koleksiyonunda “points” alan adının mevcut olup olmadığının nasıl kontrol edileceğini gösterir:

 db.teams.find({ " points ": { $exists : true } })

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

 { _id: ObjectId("6203d10c1e95a9885e1e7637"),
  team: 'Mavs',
  class: { conf: 'Western', div: 'A' },
  points: 31 }
{ _id: ObjectId("6203d10c1e95a9885e1e7638"),
  team: 'Spurs',
  class: { conf: 'Western', div: 'A' },
  points: 22 }
{ _id: ObjectId("6203d10c1e95a9885e1e7639"),
  team: 'Jazz',
  class: { conf: 'Western', div: 'B' },
  points: 19 }
{ _id: ObjectId("6203d10c1e95a9885e1e763a"),
  team: 'Celtics',
  class: { conf: 'Eastern', div: 'C' },
  points: 26 }

“puan” alan adı mevcut olduğundan, “puan” alanını içeren her belge döndürülür.

Bunun yerine, takım koleksiyonunda “çalma” alan adının mevcut olup olmadığını kontrol ettiğimizi varsayalım:

 db.teams.find({ " steals ": { $exists : true } })

Bu alan mevcut olmadığından çıktı döndürülmez.

Örnek 2: Gömülü alanın mevcut olup olmadığını kontrol edin

Aşağıdaki kod, takımlar koleksiyonunun “class” alanında yerleşik “div” alan adının mevcut olup olmadığının nasıl kontrol edileceğini gösterir:

 db.teams.find({ " class.div ": { $exists : true } })

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

 { _id: ObjectId("6203d10c1e95a9885e1e7637"),
  team: 'Mavs',
  class: { conf: 'Western', div: 'A' },
  points: 31 }
{ _id: ObjectId("6203d10c1e95a9885e1e7638"),
  team: 'Spurs',
  class: { conf: 'Western', div: 'A' },
  points: 22 }
{ _id: ObjectId("6203d10c1e95a9885e1e7639"),
  team: 'Jazz',
  class: { conf: 'Western', div: 'B' },
  points: 19 }
{ _id: ObjectId("6203d10c1e95a9885e1e763a"),
  team: 'Celtics',
  class: { conf: 'Eastern', div: 'C' },
  points: 26 }

Gömülü “div” alanının adı “class” alanında mevcut olduğundan, “div” gömülü alanını içeren her belge döndürülür.

Bunun yerine, takımlar koleksiyonundaki “class” alanında yerleşik “division” alan adının mevcut olup olmadığını kontrol ettiğimizi varsayalım:

 db.teams.find({ " class.division ": { $exists : true } })

Bu yerleşik alan mevcut olmadığından herhangi bir çıktı döndürülmez.

Not : $exists 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: Tüm alan adları nasıl listelenir
MongoDB: Alanlar nasıl yeniden adlandırılır
MongoDB: Yeni alanlar nasıl eklenir?
MongoDB: Alanlar nasıl silinir

Yorum ekle

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