Een zoekopdracht zoals {"colors.*.prestock" : {$gte:30}}
is niet mogelijk volgens SERVER-267
, en ik betwijfel of dit in de komende jaren zal worden ondersteund.
Je kunt het beste het schema wijzigen in een array:
colors: [
{ "color" : "Green", "instock" : 50, ... },
{ "color" : "Yellow", "instock" : 50, ... },
]
Dan kunt u opvragen
db.foo.find( {"colors.prestock" : {$gte:30}} )
Merk op dat dit het hele object retourneert, inclusief alle kleuren, d.w.z. ook die waarvoor de querybeperking niet geldt. Dit kan worden opgelost met behulp van het aggregatieraamwerk, maar nogmaals, alleen met behulp van $unwind
waarvoor ook colors
. nodig zijn een array zijn.