$push
wordt gebruikt om een waarde aan een array toe te voegen. In uw voorbeeld, measurements is een array en Mongo voegt $newData toe als zijn eerste element. Dit verklaart de 0 index tussen measurements en levels . In uw gewenste resultaat, measurements is een object gelijk aan $newData (d.w.z. het heeft een levels eigenschap, die op zijn beurt een array van objecten bevat).
Een van de volgende voorbeelden zou moeten bereiken wat u wilt:
// 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)
Opmerking:$push zal flexibeler zijn als u gegevens wilt toevoegen aan toekomstige updates, terwijl $set zal natuurlijk het gegeven veld overschrijven.