Una consulta como {"colors.*.prestock" : {$gte:30}}
no es posible según SERVER-267
, y dudo que esto sea compatible en los próximos años.
Su mejor opción es cambiar el esquema a una matriz:
colors: [
{ "color" : "Green", "instock" : 50, ... },
{ "color" : "Yellow", "instock" : 50, ... },
]
Entonces puedes consultar
db.foo.find( {"colors.prestock" : {$gte:30}} )
Tenga en cuenta que esto devolverá el objeto completo, incluidos todos los colores, es decir, también aquellos para los que no se cumple la restricción de consulta. Esto podría resolverse usando el marco de agregación, pero nuevamente, solo usando $unwind
que también requiere colors
ser una matriz.