Vous ne pouvez pas utiliser plusieurs positions $, dans votre cas, vous pouvez utiliser des filtres de position et de tableau uniques,
L'opérateur positionnel filtré $[<identifier>]
identifie les éléments du tableau qui correspondent aux conditions de arrayFilters pour une opération de mise à jour,
db.collection(TABLE).updateOne({
list_id: 23,
"cards.categories.category": "section01"
},
{
$push: {
"cards.$.categories.$[elem].tags": {
name: "tag02",
id: uuidv4(),
is_selected: true
}
}
},
{
arrayFilters: [
{ "elem.category": "section01" }
]
})
Aire de jeux