Kueri seperti {"colors.*.prestock" : {$gte:30}}
tidak mungkin menurut SERVER-267
, dan saya ragu ini akan didukung di tahun-tahun mendatang.
Taruhan terbaik Anda adalah mengubah skema menjadi array:
colors: [
{ "color" : "Green", "instock" : 50, ... },
{ "color" : "Yellow", "instock" : 50, ... },
]
Kemudian Anda dapat menanyakan
db.foo.find( {"colors.prestock" : {$gte:30}} )
Perhatikan bahwa ini akan mengembalikan seluruh objek, termasuk semua warna, yaitu juga yang tidak dimiliki batasan kueri. Ini dapat diselesaikan menggunakan kerangka kerja agregasi, tetapi sekali lagi, hanya menggunakan $unwind
yang juga membutuhkan colors
menjadi larik.