Mongodb: i̇ki alanın dizeleri nasıl birleştirilir


İki alandaki dizeleri MongoDB’de yeni bir alanda birleştirmek için aşağıdaki sözdizimini kullanabilirsiniz:

 db.myCollection.aggregate([
  { $project : { newfield: { $concat : [ " $field1 ", " - ", " $field2 " ] } } },
  { $merge : "myCollection" }
])

Bu özel örnek, “field1” ve “field2” dizelerini “newfield” adlı yeni bir alanda birleştirir ve yeni alanı myCollection adlı koleksiyona ekler.

Aşağıdaki örnek, bu sözdiziminin , aşağıdaki belgelere sahip bir koleksiyon ekibiyle pratikte nasıl kullanılacağını gösterir :

 db.teams.insertOne({team: " Mavs ", conference: " Western ", points: 31})
db.teams.insertOne({team: " Spurs ", conference: " Western ", points: 22})
db.teams.insertOne({team: " Rockets ", conference: " Western ", points: 19})
db.teams.insertOne({team: " Celtics ", conference: " Eastern ", points: 26})
db.teams.insertOne({team: " Cavs ", conference: " Eastern ", points: 33})
db.teams.insertOne({team: " Nets ", conference: " Eastern ", points: 38})

Örnek: MongoDB’de Dizeleri Birleştirme

“Team” alanı ve “konferans” alanındaki dizeleri “teamConf” adlı yeni bir alanda birleştirmek ve bu alanı ekipler koleksiyonuna eklemek için aşağıdaki kodu kullanabiliriz:

 db.teams.aggregate([
  { $project : { teamConf: { $concat : [ " $team ", " - ", " $conference " ] } } },
  { $merge : "teams" }
])

Güncellenen koleksiyon artık şöyle görünüyor:

 { _id: ObjectId("62013d8c4cb04b772fd7a90c"),
  team: 'Mavs',
  conference: 'Western',
  points: 31,
  teamConf: 'Mavs - Western' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90d"),
  team: 'Spurs',
  conference: 'Western',
  points: 22,
  teamConf: 'Spurs - Western' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90e"),
  team: 'Rockets',
  conference: 'Western',
  points: 19,
  teamConf: 'Rockets - Western' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90f"),
  team: 'Celtics',
  conference: 'Eastern',
  points: 26,
  teamConf: 'Celtics - Eastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a910"),
  team: 'Cavs',
  conference: 'Eastern',
  points: 33,
  teamConf: 'Cavs - Eastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a911"),
  team: 'Nets',
  conference: 'Eastern',
  points: 38,
  teamConf: 'Nets - Eastern' }

Her belgede “ekip” ve “konferans” alanlarının birleşimini içeren “teamConf” başlıklı yeni bir alanın bulunduğunu unutmayın.

Bu özel örnek için, ayırıcı olarak kısa çizgi kullanarak iki dizeyi birleştirmeyi seçtik.

Ancak iki stringi aralarında herhangi bir ayırıcı değer olmadan birleştirmeyi seçebilirdik.

Aşağıdaki kod bunun nasıl yapılacağını gösterir:

 db.teams.aggregate([
  { $project : { teamConf: { $concat : [ " $team ", " $conference " ] } } },
  { $merge : "teams" }
])

Güncellenen koleksiyonun şöyle görüneceği:

 { _id: ObjectId("62013d8c4cb04b772fd7a90c"),
  team: 'Mavs',
  conference: 'Western',
  points: 31,
  teamConf: 'MavsWestern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90d"),
  team: 'Spurs',
  conference: 'Western',
  points: 22,
  teamConf: 'SpursWestern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90e"),
  team: 'Rockets',
  conference: 'Western',
  points: 19,
  teamConf: 'RocketWestern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a90f"),
  team: 'Celtics',
  conference: 'Eastern',
  points: 26,
  teamConf: 'CelticsEastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a910"),
  team: 'Cavs',
  conference: 'Eastern',
  points: 33,
  teamConf: 'CavsEastern' }
{ _id: ObjectId("62013d8c4cb04b772fd7a911"),
  team: 'Nets',
  conference: 'Eastern',
  points: 38,
  teamConf: 'NetsEastern' }

“TeamConf” başlıklı yeni alanın, aralarında herhangi bir ayırma değeri olmaksızın “ekip” ve “konferans” alanlarının birleşimini içerdiğini unutmayın.

Not : $concat 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: Alanın bir dize içerip içermediği nasıl kontrol edilir
MongoDB: Yeni bir alan nasıl eklenir
MongoDB: Bir alan nasıl silinir

Yorum ekle

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