Saya telah mencari jawaban ini juga, dan saya tidak yakin bahwa saya suka mengakses dokumen terakhir dari array. Namun, saya punya solusi alternatif. Metode m['b'].push
akan mengembalikan bilangan bulat, 1 atau 0 - Saya berasumsi itu didasarkan pada keberhasilan Push (dalam hal validasi). Namun, untuk mendapatkan akses ke subdokumen, dan khususnya _id subdokumen - Anda harus menggunakan create
metode pertama, lalu push
.
Kodenya adalah sebagai berikut:
var subdoc = m['b'].create({ ba: 234, bb: "World" });
m['b'].push(subdoc);
console.log(subdoc._id);
m.save(function(err, model) { console.log(arguments); });
Apa yang terjadi adalah ketika Anda meneruskan objek ke metode Push atau create, skema cast segera muncul (termasuk hal-hal seperti validasi dan tipe casting) - ini berarti bahwa inilah saatnya ObjectId dibuat; tidak ketika model disimpan kembali ke Mongo. Faktanya, mongo tidak secara otomatis menetapkan nilai _id ke subdokumen, ini adalah fitur luwak. Pembuatan luwak didokumentasikan di sini:buat dokumen
Oleh karena itu, Anda juga harus mencatat, bahwa meskipun Anda memiliki subdocument _id - itu belum ada di Mongo sampai Anda menyimpannya, jadi berhati-hatilah dengan tindakan DOCRef apa pun yang mungkin Anda ambil.