Dotaz jako {"colors.*.prestock" : {$gte:30}}
není možné podle SERVER-267
a pochybuji, že to bude v příštích letech podporováno.
Nejlepším řešením je změnit schéma na pole:
colors: [
{ "color" : "Green", "instock" : 50, ... },
{ "color" : "Yellow", "instock" : 50, ... },
]
Pak můžete dotaz
db.foo.find( {"colors.prestock" : {$gte:30}} )
Všimněte si, že to vrátí celý objekt, včetně všech barev, tedy i těch, pro které neplatí omezení dotazu. To by se dalo vyřešit pomocí agregačního rámce, ale opět pouze pomocí $unwind
což také vyžaduje colors
být polem.