$push
służy do dołączania wartości do tablicy. W twoim przykładzie measurements
jest tablicą, a Mongo dołącza $newData
jako pierwszy element. To wyjaśnia 0
indeks między measurements
i levels
. W żądanym wyniku measurements
jest obiektem równoważnym $newData
(tzn. ma levels
właściwość, która z kolei zawiera tablicę obiektów).
Każdy z poniższych przykładów powinien osiągnąć to, co chcesz:
// 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)
Uwaga:$push
będzie bardziej elastyczny, jeśli chcesz dołączać dane do przyszłych aktualizacji, podczas gdy $set
naturalnie nadpisze dane pole.