Ya, tapi tidak seperti yang Anda inginkan. Jika Anda melakukan hal berikut, Anda hanya akan mendapatkan kembali elemen pertama dari array:
coll.find({_id:'2'}, { 'objects.0': 1})
Namun, yang sebenarnya Anda inginkan adalah sesuatu yang terlihat seperti berikut:
coll.find({_id:'2', 'objects._id': '3'}, { 'objects.$' : 1})
Tentu saja, itu tidak benar-benar berfungsi di MongoDB.
Melihat pertanyaan Anda yang lain , ini adalah salah satu alasan untuk menggunakan "objek tersemat" alih-alih "array objek". Dengan "objek tersemat" Anda dapat melakukan hal berikut:
coll.find({_id:'2'}, {'objects.3': 1}) // where 3 is the id of the third object
Ini memungkinkan Anda memilih "objek tersemat" yang Anda butuhkan saja.
Masalahnya dengan MongoDB adalah bahwa dokumen induknya selalu diambil. Kueri mengembalikan dokumen tingkat atas. Ini dimasukkan ke dalam seluruh arsitektur. Bahkan jika Anda hanya meminta sepotong dokumen, server masih harus memuat seluruh dokumen ke dalam memori sebelum melayani Anda bagian yang diminta.
Satu-satunya cara untuk mengatasi hal ini adalah dengan Kerangka Kerja Agregasi yang baru , tapi itu belum ada di cabang stabil.