$push
est utilisé pour ajouter une valeur à un tableau. Dans votre exemple, measurements
est un tableau et Mongo ajoute $newData
comme son premier élément. Ceci explique le 0
index entre measurements
et levels
. Dans le résultat souhaité, measurements
est un objet équivalent à $newData
(c'est-à-dire qu'il a un levels
propriété, qui à son tour contient un tableau d'objets).
L'un ou l'autre des exemples suivants devrait accomplir ce que vous voulez :
// if $newData is {"levels": [{"level_qty":12,"level_uom":"ft"}]}
->set("measurements", $newData)
// if $newData is [{"level_qty":12,"level_uom":"ft"}]
->set("measurements.levels", $newData)
// if $newData is {"level_qty":12,"level_uom":"ft"}
->push("measurements.levels", $newData)
Remarque :$push
va être plus flexible si vous souhaitez ajouter des données avec de futures mises à jour, alors que $set
écrasera naturellement le champ donné.