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