$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
естествено ще презапише даденото поле.