Mongodb: cara menggabungkan string dari dua bidang


Anda dapat menggunakan sintaks berikut untuk menggabungkan string dari dua bidang ke dalam bidang baru di MongoDB:

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

Contoh khusus ini menggabungkan string “field1” dan “field2” ke dalam kolom baru bernama “newfield” dan menambahkan kolom baru ke koleksi bernama myCollection .

Contoh berikut memperlihatkan cara menggunakan sintaksis ini dalam praktik dengan tim koleksi dengan dokumen berikut:

 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})

Contoh: Menggabungkan String di MongoDB

Kita dapat menggunakan kode berikut untuk menggabungkan string dari bidang “tim” dan bidang “konferensi” ke dalam bidang baru bernama “teamConf” dan menambahkan bidang ini ke koleksi tim :

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

Seperti inilah tampilan koleksi yang diperbarui sekarang:

 { _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' }

Perhatikan bahwa setiap dokumen memiliki bidang baru berjudul “teamConf” yang berisi gabungan bidang “tim” dan “konferensi”.

Untuk contoh khusus ini, kami memilih untuk menggabungkan dua string menggunakan tanda hubung sebagai pemisah.

Namun, kita dapat memilih untuk menggabungkan kedua string tersebut tanpa ada nilai pemisah di antara keduanya.

Kode berikut menunjukkan cara melakukan ini:

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

Berikut tampilan koleksi yang diperbarui:

 { _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' }

Perhatikan bahwa bidang baru berjudul “teamConf” berisi gabungan bidang “tim” dan “konferensi” tanpa nilai pemisahan apa pun di antara keduanya.

Catatan : Anda dapat menemukan dokumentasi lengkap untuk fungsi $concat di sini .

Sumber daya tambahan

Tutorial berikut menjelaskan cara melakukan operasi umum lainnya di MongoDB:

MongoDB: Cara memeriksa apakah bidang berisi string
MongoDB: Cara menambahkan bidang baru
MongoDB: Cara menghapus bidang

Tambahkan komentar

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *