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.
Operator $setField digunakan untuk menambahkan, memperbarui, atau menghapus bidang dalam dokumen yang disematkan. Operator memungkinkan manipulasi bidang dokumen yang tepat, yang membuatnya berguna untuk tugas seperti memperbarui bidang berlapis, merestrukturisasi dokumen, atau bahkan menghapus bidang sepenuhnya.
Syntax
{
$setField: {
field: <fieldName>,
input: <expression>,
value: <expression>
}
}
Parameter-parameternya
| Pengaturan | Description |
|---|---|
<field> |
Dokumen (objek) yang akan diubah menjadi array pasangan kunci-nilai. |
<input> |
Dokumen atau bidang sedang diproses. |
<value> |
Nilai baru untuk ditetapkan ke bidang . Jika value adalah null, bidang dihapus. |
Examples
Pertimbangkan dokumen sampel ini dari koleksi toko.
{
"_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4",
"name": "First Up Consultants | Beverage Shop - Satterfieldmouth",
"location": {
"lat": -89.2384,
"lon": -46.4012
},
"staff": {
"totalStaff": {
"fullTime": 8,
"partTime": 20
}
},
"sales": {
"totalSales": 75670,
"salesByCategory": [
{
"categoryName": "Wine Accessories",
"totalSales": 34440
},
{
"categoryName": "Bitters",
"totalSales": 39496
},
{
"categoryName": "Rum",
"totalSales": 1734
}
]
},
"promotionEvents": [
{
"eventName": "Unbeatable Bargain Bash",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 6,
"Day": 23
},
"endDate": {
"Year": 2024,
"Month": 7,
"Day": 2
}
},
"discounts": [
{
"categoryName": "Whiskey",
"discountPercentage": 7
},
{
"categoryName": "Bitters",
"discountPercentage": 15
},
{
"categoryName": "Brandy",
"discountPercentage": 8
},
{
"categoryName": "Sports Drinks",
"discountPercentage": 22
},
{
"categoryName": "Vodka",
"discountPercentage": 19
}
]
},
{
"eventName": "Steal of a Deal Days",
"promotionalDates": {
"startDate": {
"Year": 2024,
"Month": 9,
"Day": 21
},
"endDate": {
"Year": 2024,
"Month": 9,
"Day": 29
}
},
"discounts": [
{
"categoryName": "Organic Wine",
"discountPercentage": 19
},
{
"categoryName": "White Wine",
"discountPercentage": 20
},
{
"categoryName": "Sparkling Wine",
"discountPercentage": 19
},
{
"categoryName": "Whiskey",
"discountPercentage": 17
},
{
"categoryName": "Vodka",
"discountPercentage": 23
}
]
}
]
}
Contoh 1: Memperbarui bidang berlapis
Kueri ini melakukan pembaruan kondisional pada nilai diskon berlapis di dalam peristiwa promosi untuk dokumen yang cocok dengan tertentu _id.
db.stores.updateOne(
{ "_id": "0fcc0bf0-ed18-4ab8-b558-9848e18058f4" },
[
{
$set: {
"store.promotionEvents": {
$map: {
input: "$store.promotionEvents",
as: "event",
in: {
$setField: {
field: "discounts",
input: "$$event",
value: {
$map: {
input: "$$event.discounts",
as: "discount",
in: {
$cond: {
if: { $eq: ["$$discount.categoryName", "Laptops"] },
then: {
categoryName: "$$discount.categoryName",
discountPercentage: 18
},
else: "$$discount"
}
}
}
}
}
}
}
}
}
}
]
)
Contoh 2: Menghapus bidang
Kueri ini menghapus totalStaff bidang dari staff objek.
db.collection.updateOne(
{ "store.storeId": "12345" },
[{
$set: {
"store.staff": {
$setField: {
field: "totalStaff",
input: "$store.staff",
value: null
}
}
}
}]
)
Konten terkait
- Tinjau opsi untuk bermigrasi dari MongoDB ke Azure DocumentDB.
- Baca selengkapnya tentang kompatibilitas fitur dengan MongoDB.