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.
BERLAKU UNTUK:
MongoDB vCore
Operator $
posisi mengidentifikasi elemen dalam array untuk diperbarui tanpa secara eksplisit menentukan posisi elemen dalam array. Operator $
bertindak sebagai tempat penampung untuk elemen pertama yang cocok dengan kondisi kueri, dan bidang array harus muncul sebagai bagian dari dokumen kueri.
Sintaksis
Sintaks untuk $
operator posisi adalah sebagai berikut:
db.collection.updateOne(
{ <array>: <value> },
{ <update operator>: { "<array>.$": <value> } }
)
Parameter-parameternya
Deskripsi | |
---|---|
array |
Bidang array yang berisi elemen yang akan diperbarui. Harus menjadi bagian dari kondisi kueri. |
value |
Nilai yang digunakan untuk mencocokkan elemen array dalam kondisi kueri. |
update operator |
Operator pembaruan yang akan diterapkan (misalnya, , $set , $inc $unset ). |
Contoh
Mari kita pahami penggunaan dengan sampel JSON dari himpunan stores
data.
{
"_id": "905d1939-e03a-413e-a9c4-221f74055aac",
"name": "Trey Research | Home Office Depot - Lake Freeda",
"location": { "lat": -48.9752, "lon": -141.6816 },
"staff": { "employeeCount": { "fullTime": 12, "partTime": 19 } },
"sales": {
"salesByCategory": [ { "categoryName": "Desk Lamps", "totalSales": 37978 } ],
"revenue": 37978
},
"promotionEvents": [
{
"eventName": "Crazy Deal Days",
"promotionalDates": {
"startDate": { "Year": 2023, "Month": 9, "Day": 27 },
"endDate": { "Year": 2023, "Month": 10, "Day": 4 }
},
"discounts": [
{ "categoryName": "Desks", "discountPercentage": 22 },
{ "categoryName": "Filing Cabinets", "discountPercentage": 23 }
]
},
{
"eventName": "Incredible Markdown Mania",
"promotionalDates": {
"startDate": { "Year": 2023, "Month": 12, "Day": 26 },
"endDate": { "Year": 2024, "Month": 1, "Day": 2 }
},
"discounts": [
{ "categoryName": "Monitor Stands", "discountPercentage": 20 },
{ "categoryName": "Desks", "discountPercentage": 24 }
]
}
]
}
Contoh 1: Memperbarui persentase diskon untuk kategori tertentu
Contoh memperbarui persentase diskon untuk kategori "Meja" dalam acara promosi pertama yang cocok.
db.stores.updateOne(
{
"_id": "905d1939-e03a-413e-a9c4-221f74055aac",
"promotionEvents.discounts.categoryName": "Desks"
},
{
$set: { "promotionEvents.$.discounts.$[elem].discountPercentage": 25 }
},
{
arrayFilters: [{ "elem.categoryName": "Desks" }]
}
)
Contoh 2: Memperbarui total kategori penjualan
Contoh memperbarui total penjualan untuk kategori tertentu menggunakan $ (positional operator)
.
db.stores.updateOne(
{
"_id": "905d1939-e03a-413e-a9c4-221f74055aac",
"sales.salesByCategory.categoryName": "Desk Lamps"
},
{
$inc: { "sales.salesByCategory.$.totalSales": 1000 }
}
)
Kueri meningkatkan total penjualan untuk kategori "Lampu Meja" sebesar 1000, memperbaruinya dari 37978 menjadi 38978.
{
"_id": "905d1939-e03a-413e-a9c4-221f74055aac",
"sales": {
"salesByCategory": [ { "categoryName": "Desk Lamps", "totalSales": 38978 } ],
"revenue": 37978
}
}
Konten terkait
- Meninjau opsi untuk Migrasi dari MongoDB ke Azure Cosmos DB untuk MongoDB (vCore)
- Baca selengkapnya tentang Kompatibilitas fitur dengan MongoDB