Saya telah menjawab ini beberapa kali tentang mengambil sub-dokumen sendirian dari koleksi mongo di sini , dan di sini
Hanya tidak ada cara untuk melakukan ini saat ini. Ini adalah perilaku memfilter dokumen tertanam multi level, biasanya filter yang cocok akan mengembalikan seluruh dokumen, bukan subset.
Ada dua masalah luar biasa yang sudah ada di mongo terkait dengan operator posisional ($) ini di bidang untuk mengembalikan specifier dan Kemampuan untuk menggunakan data subdokumen yang isinya digunakan untuk memenuhi kueri menggunakan operator $ . (Silakan masuk untuk memilih jika Anda benar-benar membutuhkan fitur tersebut)
Dan skema alternatif Anda juga tidak berguna di sini.
jadi Anda harus menyimpan setiap fitur dalam dokumen terpisah seperti ini agar berfungsi seperti yang Anda inginkan
fitur 1
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 1',
'some_field' : 'zzz'
}
fitur 2
{
'_id': SomeObjectId,
'name' :'some name',
'value': 'feature 2',
'some_field' : 'zzz'
}
dan bertanya
db.features.find({'_id':someobjectid})
hanya akan mengembalikan fitur tertentu