Mongodb: mevcut değilse nasıl eklenir?
Bir belgeyi MongoDB’deki bir koleksiyona yalnızca mevcut değilse eklemek için aşağıdaki sözdizimini kullanabilirsiniz:
db.teams.update( { team: 'Hornets' }, { $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'} }, {upsert: true } )
Bu özel kod, “takım” alanının “Hornets” değerine sahip olup olmadığını kontrol eder. Bu değer mevcutsa hiçbir şey olmayacaktır.
Ancak bu değer mevcut değilse, “takım”, “puan” ve “ribaund” alanları için belirli değerleri içeren bir belge eklenecektir.
Aşağıdaki örnek, bu sözdiziminin pratikte nasıl kullanılacağını gösterir.
Örnek: MongoDB’de yoksa ekleyin
Diyelim ki aşağıdaki belgelere sahip ekipler adında bir koleksiyonumuz var:
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8}) db.teams.insertOne({team: " Spurs ", points: 35, rebounds: 12}) db.teams.insertOne({team: " Rockets ", points: 20, rebounds: 7}) db.teams.insertOne({team: " Warriors ", points: 25, rebounds: 5}) db.teams.insertOne({team: " Cavs ", points: 23, rebounds: 9})
“Mavs” ekibi için bir belge eklemeyi denemek amacıyla aşağıdaki kodu kullandığımızı varsayalım:
db.teams.update( { team: 'Mavs' }, { $setOnInsert : {team: 'Mavs', points: '58', rebounds: '20'} }, {upsert: true } )
“Takım” alanı zaten “Mavs” için bilgi içeriyor, belgelerin hiçbiri değiştirilmeyecek.
Ancak “Hornets” ekibine bir belge eklemek için aşağıdaki kodu kullandığımızı varsayalım:
db.teams.update( { team: 'Hornets' }, { $setOnInsert : {team: 'Hornets', points: '58', rebounds: '20'} }, {upsert: true } )
“Takım” alanı halihazırda “Hornets” için bilgi içermediğinden, her alan için belirlediğimiz değerlere sahip yeni bir belge koleksiyona eklenecektir.
Güncellenen koleksiyon şöyle görünüyor:
{ _id: ObjectId("6203df361e95a9885e1e764a"), team: 'Mavs', points: 30, rebounds: 8 } { _id: ObjectId("6203df361e95a9885e1e764b"), team: 'Spurs', points: 35, rebounds: 12 } { _id: ObjectId("6203df361e95a9885e1e764c"), team: 'Rockets', points: 20, rebounds: 7 } { _id: ObjectId("6203df361e95a9885e1e764d"), team: 'Warriors', points: 25, rebounds: 5 } { _id: ObjectId("6203df361e95a9885e1e764e"), team: 'Cavs', points: 23, rebounds: 9 } { _id: ObjectId("6203e17de42bfba74fc73325"), team: 'Hornets', dots: '58', rebounds: '20' }
“Hornets” ekibi için yeni bir belgenin eklendiğini unutmayın.
Not : $upsert 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: Yeni bir alan nasıl eklenir
MongoDB: Bir alan nasıl silinir
MongoDB: Bir alandaki farklı değerler nasıl sayılır?