$ push
được sử dụng để nối một giá trị vào một mảng. Trong ví dụ của bạn, measurements là một mảng và Mongo đang thêm $newData như phần tử đầu tiên của nó. Điều này giải thích 0 chỉ mục giữa measurements và cấp levels . Trong kết quả mong muốn của bạn, measurements là một đối tượng tương đương với $newData (tức là nó có levels thuộc tính, đến lượt nó có một mảng các đối tượng bên trong).
Một trong các ví dụ sau sẽ đạt được những gì bạn muốn:
// 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)
Lưu ý:$push sẽ linh hoạt hơn nếu bạn muốn nối dữ liệu với các bản cập nhật trong tương lai, trong khi $set sẽ tự nhiên ghi đè trường đã cho.