Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tahap $addFields dalam alur agregasi digunakan untuk menambahkan bidang baru ke dokumen. Ini juga dapat digunakan untuk mengatur ulang nilai bidang yang ada. Tahap ini sangat berguna ketika Anda perlu membuat bidang baru berdasarkan data yang ada atau memodifikasi bidang yang ada dalam dokumen Anda.
Sintaksis
Sintaks dasar untuk tahap $addFields adalah sebagai berikut:
{
$addFields: {
<newField1>: <expression1>,
<newField2>: <expression2>,
...
}
}
Parameter-parameternya
Deskripsi | |
---|---|
newField1 |
Nama bidang baru yang akan ditambahkan atau bidang yang sudah ada untuk diubah. |
expression1 |
Ekspresi untuk menghitung nilai newField1. |
Contoh
Contoh 1: Menambahkan Bidang Baru
Misalkan kita memiliki koleksi bernama toko dengan dokumen yang mirip dengan struktur JSON yang disediakan. Untuk menambahkan bidang baru totalDiscountEvents yang menghitung jumlah peristiwa promosi, kita dapat menggunakan alur agregasi berikut:
db.stores.aggregate([
{
$addFields: {
totalDiscountEvents: { $size: "$store.promotionEvents" }
}
}
])
Contoh keluaran
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"store": {
"name": "Downtown Store",
"promotionEvents": ["Summer Sale", "Black Friday", "Holiday Deals"]
},
"totalDiscountEvents": 3
}
]
Contoh 2: Memodifikasi Bidang yang Sudah Ada
Jika kita ingin menambahkan bidang totalStaffCount yang menjumlahkan staf penuh waktu dan paruh waktu, kita dapat menggunakan:
db.stores.aggregate([
{
$addFields: {
totalStaffCount: {
$add: ["$store.staff.totalStaff.fullTime", "$store.staff.totalStaff.partTime"]
}
}
}
])
Contoh keluaran
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"store": {
"name": "Downtown Store",
"staff": {
"totalStaff": {
"fullTime": 12,
"partTime": 8
}
}
},
"totalStaffCount": 20
}
]
Contoh 3: Menambahkan Bidang Berlapis
Untuk menambahkan bidang berlapis location.coordinates yang menggabungkan garis lintang dan bujur ke dalam array, gunakan:
db.stores.aggregate([
{
$addFields: {
"store.location.coordinates": ["$store.location.lat", "$store.location.lon"]
}
}
])
Contoh keluaran
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"store": {
"name": "Downtown Store",
"location": {
"lat": 47.6097,
"lon": -122.3331,
"coordinates": [47.6097, -122.3331]
}
}
}
]
Konten terkait
- Meninjau opsi untuk bermigrasi dari MongoDB ke Azure Cosmos DB for MongoDB (vCore)
- Mulailah dengan membuat akun.