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?

Yorum ekle

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