Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De $addFields fase in de aggregatiepijplijn wordt gebruikt om nieuwe velden aan documenten toe te voegen. Het kan ook worden gebruikt om de waarden van bestaande velden opnieuw in te stellen. Deze fase is met name handig wanneer u nieuwe velden moet maken op basis van bestaande gegevens of bestaande velden in uw documenten wilt wijzigen.
Syntaxis
De basissyntaxis voor de $addFields-fase is als volgt:
{
$addFields: {
<newField1>: <expression1>,
<newField2>: <expression2>,
...
}
}
Parameterwaarden
Beschrijving | |
---|---|
newField1 |
De naam van het nieuwe veld dat u wilt toevoegen of het bestaande veld dat u wilt wijzigen. |
expression1 |
De expressie voor het berekenen van de waarde van newField1. |
Voorbeeld(en)
Voorbeeld 1: Een nieuw veld toevoegen
Stel dat we een verzameling benoemde archieven hebben met documenten die vergelijkbaar zijn met de opgegeven JSON-structuur. Als u een nieuw veldtotaalDiscountEvents wilt toevoegen waarmee het aantal promotiegebeurtenissen wordt geteld, kunnen we de volgende aggregatiepijplijn gebruiken:
db.stores.aggregate([
{
$addFields: {
totalDiscountEvents: { $size: "$store.promotionEvents" }
}
}
])
Voorbeelduitvoer
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"store": {
"name": "Downtown Store",
"promotionEvents": ["Summer Sale", "Black Friday", "Holiday Deals"]
},
"totalDiscountEvents": 3
}
]
Voorbeeld 2: Een bestaand veld wijzigen
Als we een veld totalStaffCount willen toevoegen dat de fulltime- en parttimemedewerkers optelt, kunnen we het volgende gebruiken:
db.stores.aggregate([
{
$addFields: {
totalStaffCount: {
$add: ["$store.staff.totalStaff.fullTime", "$store.staff.totalStaff.partTime"]
}
}
}
])
Voorbeelduitvoer
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"store": {
"name": "Downtown Store",
"staff": {
"totalStaff": {
"fullTime": 12,
"partTime": 8
}
}
},
"totalStaffCount": 20
}
]
Voorbeeld 3: Geneste velden toevoegen
Als u een geneste veldlocatie.coördinaten wilt toevoegen waarin breedtegraad en lengtegraad in een matrix worden gecombineerd, gebruikt u:
db.stores.aggregate([
{
$addFields: {
"store.location.coordinates": ["$store.location.lat", "$store.location.lon"]
}
}
])
Voorbeelduitvoer
[
{
"_id": "7954bd5c-9ac2-4c10-bb7a-2b79bd0963c5",
"store": {
"name": "Downtown Store",
"location": {
"lat": 47.6097,
"lon": -122.3331,
"coordinates": [47.6097, -122.3331]
}
}
}
]
Verwante inhoud
- Bekijk de opties voor het migreren van MongoDB naar Azure Cosmos DB voor MongoDB (vCore)
- Ga aan de slag door een account te maken.