$push
se používá k připojení hodnoty k poli. Ve vašem příkladu measurements je pole a Mongo připojuje $newData jako její první prvek. To vysvětluje 0 index mezi measurements a levels . V požadovaném výsledku measurements je objekt ekvivalentní $newData (tj. má levels vlastnost, která má zase uvnitř pole objektů).
Každý z následujících příkladů by měl dosáhnout toho, co chcete:
// 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)
Poznámka:$push bude flexibilnější, pokud chcete přidávat data s budoucími aktualizacemi, zatímco $set přirozeně přepíše dané pole.