$push
viene utilizzato per aggiungere un valore a una matrice. Nel tuo esempio, measurements
è un array e Mongo sta aggiungendo $newData
come suo primo elemento. Questo spiega il 0
indice tra measurements
e levels
. Nel risultato desiderato, measurements
è un oggetto equivalente a $newData
(cioè ha un levels
proprietà, che a sua volta contiene un array di oggetti).
Uno dei seguenti esempi dovrebbe ottenere ciò che desideri:
// 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)
Nota:$push
sarà più flessibile se desideri aggiungere dati con aggiornamenti futuri, mentre $set
sovrascriverà naturalmente il campo specificato.