Az adatbázisban lévő objektumok rendelkeznek egy „tulajdonságok” tömbbel, amely különféle objektumokat tartalmazhat. Némelyikük számokat vagy tartományokat mutat be, és így néz ki:
{'value': 10}
or
{'minValue': 4, 'maxValue': 8}
Amikor egy adott számra, például X-re kérdezek le a gyűjteményben, meg akarok találni minden olyan dokumentumot, ahol valamelyik érték egyenlő X-szel vagy minValue ‹= X ‹= maxValue. Az első lekérdezési kísérletem így néz ki
db.Pool0.find({$or: [{'properties.value': X}, {'properties.minValue': {$lte: X}, 'properties.maxValue': {$gte: X}}]}, {'_id': 1}).pretty()
A hátránya az, hogy ha a tulajdonságtömb több objektumot tartalmaz, amelyek a minValue-t és a maxValue-t adják meg, akkor X bármelyik között lehet. Például
"properties" : [
{
"minValue" : 4,
"maxValue" : 6
},
{
"minValue" : 10,
"maxValue" : 20
}
]
egyezik X = 8 esetén. Javítható-e a lekérdezés úgy, hogy a tulajdonságokon belüli objektumstruktúra tiszteletben maradjon?