Contoh Kasus

Contoh kasus nya, ada pergantian aset gambar dari semula menggunakan AWS Cloudfront sekarang menggunakan CDN Spaces DigitalOcean

Ganti ke DO Biar Lebih Murah
Beberapa Cara Mengganti Value yang Berisi URL
Cara pertama, dengan cara export lalu find & replace:
-
Export/Dump collection
-
Buka file dengan editor, lalu ganti URL dengan fitur find and replace
-
Atau bisa menggunakan
sed
. Cara ini merupakan cara yang jauh lebih baik apabila size dump collection sangat besar
sed -i 's/aset-aku.cloudfront.com/aset-aku.sgp1.digitaloceanspaces.com/g' namacollection
Cara kedua dengan menggunakan command updateMany
dari mongosh
-
Login ke server mongo atau gunakan tools GUI seperti mongo compass
-
Masuk ke database yang ingin value URL nya di ganti
use databasekamu
db.media.updateMany(
{ url:{$regex : "/aset-aku.cloudfront.com/"} },
[{
$set: { url: {
$replaceOne: { input: "$url", find: "aset-aku.cloudfront.com", replacement: "aset-aku.sgp1.digitaloceanspaces.com" }
}}
}]
)
Command { url:{$regex : "/aset-aku.cloudfront.com/"} }
digunakan untuk mencari field yang mengandung “aset-aku.cloudfront.com” di mana nama field nya adalah “url”
Apabila kamu ingin filter value dengan multiple condition
# search in media collection document with tipe_gambar: gambar_profile & url: aset-aku.cloudfront.com
db.media.updateMany(
{ tipe_gambar: "gambar_profil", url:{$regex : "/aset-aku.cloudfront.com/"} },
[{
$set: { url: {
$replaceOne: { input: "$url", find: "aset-aku.cloudfront.com", replacement: "aset-aku.sgp1.digitaloceanspaces.com" }
}}
}]
)
Jika menambahkan path di URL. File di collection aset-aku.sgp1.digitaloceanspaces.com/2023randomnumberandtext
db.media.updateMany(
{type: 'pdf',url: {$regex: '(/aset-aku.sgp1.digitaloceanspaces.com\/2)'} },
[{
$set: { url: {
$replaceOne: { input: "$url", find: "aset-aku.sgp1.digitaloceanspaces.com", replacement: "asset.sgp1.cdn.digitaloceanspaces.com/new-image" }
}}
}]
)

Pastikan Jumlahnya Sesuai dengan yang di Search
Referensi:
stackoverflow -How to replace substring in mongodb document

Jika kamu merasa tulisan ini bermanfaat & membantu kamu, kamu bisa berdonasi lewat saweria
If you feel this website help you, you can donate at saweria