$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.