To zapytanie aktualizujące dodaje kod JSON do zagnieżdżonej tablicy "SERVICES.VERSIONS.GROUPS.CUSTOMERS"
, na podstawie określonych warunków filtrowania. Zwróć uwagę, że warunki filtrowania kierują operację aktualizacji do określonej tablicy (zagnieżdżonych tablic).
// JSON document to be added to the CUSTOMERS array
new_cust = {
"CUSTOMER_CONFIG_ID": "6",
"ACTIVATION_DATE": "31-03-2020",
"STATUS": "Y"
}
db.collection.update(
{
"SERVICE_CATEGORY": "COMMON_SERVICE",
"SERVICES.SERVICE_NAME": "Authentication Service",
"SERVICES.VERSIONS.VERSION_NAME": "AuthenticationServiceV6_3"
},
{
$push: { "SERVICES.$[s].VERSIONS.$[v].GROUPS.$[g].CUSTOMERS": new_cust }
},
{
multi: true,
arrayFilters: [
{ "s.SERVICE_NAME": "Authentication Service" },
{ "v.VERSION_NAME": "AuthenticationServiceV6_3" },
{ "g.GROUP_NAME": "TEST GROUP" }
]
}
);
Niewiele rzeczy, na które należy zwrócić uwagę podczas aktualizowania dokumentów za pomocą zagnieżdżonych tablic więcej niż jednopoziomowe zagnieżdżenie.
- Użyj operatora all pozycyjnego
$[]
i przefiltrowany operator pozycji$[<identifier>]
, i nie$
operator pozycyjny. Z filtrowanym operatorem pozycyjnym określ warunki filtrowania tablicy za pomocąarrayFilters
parametr. Zauważ, że to skieruje twoją aktualizację na określoną zagnieżdżoną tablicę. - Dla filtrowanego operatora pozycyjnego
$[<identifier>]
, identyfikator musi zaczynać się od małej litery i zawierać tylko znaki alfanumeryczne.
Referencje:
- Operatorzy aktualizacji tablicy
- db.collection.update() z arrayFilters