この更新クエリは、ネストされた配列"SERVICES.VERSIONS.GROUPS.CUSTOMERS"
にJSONを追加します。 、指定されたフィルター条件に基づきます。フィルタ条件によって、更新操作が(ネストされた配列の)特定の配列に向けられることに注意してください。
// 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" }
]
}
);
ネストされた配列を使用してドキュメントを更新する際の注意事項 複数のレベルのネストの。
- 全位置演算子
$[]
を使用します フィルタリングされたpositionaloperator$[<identifier>]
、および$
ではありません 位置演算子。フィルターされた位置演算子を使用して、arrayFilters
を使用して配列フィルター条件を指定します。 パラメータ。これにより、特定のネストされたアレイを対象とするように更新が指示されることに注意してください。 - フィルタリングされた位置演算子の場合
$[<identifier>]
、識別子は小文字で始まり、英数字のみが含まれている必要があります。
参照:
- 配列UpdateOperators
- db.collection.update()とarrayFilters