$push
används för att lägga till ett värde till en array. I ditt exempel, measurements
är en array och Mongo lägger till $newData
som dess första element. Detta förklarar 0
index mellan measurements
och levels
. I önskat resultat, measurements
är ett objekt som motsvarar $newData
(dvs den har en levels
egenskap, som i sin tur har en rad objekt inom).
Något av följande exempel bör åstadkomma vad du vill:
// 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)
Obs:$push
kommer att vara mer flexibel om du vill lägga till data med framtida uppdateringar, medan $set
kommer naturligtvis att skriva över det givna fältet.