$push
се използва за добавяне на стойност към масив. Във вашия пример, measurements е масив и Mongo добавя $newData като негов първи елемент. Това обяснява 0 индекс между measurements и levels . В желания от вас резултат, measurements е обект, еквивалентен на $newData (т.е. има levels свойство, което от своя страна има масив от обекти в него).
Всеки от следните примери трябва да постигне това, което искате:
// 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)
Забележка:$push ще бъде по-гъвкав, ако искате да добавите данни с бъдещи актуализации, докато $set естествено ще презапише даденото поле.