|
In the sample session below, the document will be returned if you queried using the full range, but if you split the query into 2 parts, you will never get the document as part of the result.
> db.user.insert({ y: 1 });
|
> db.user.ensureIndex({ x: 1 });
|
> db.user.find({ x: { $gte: MinKey, $lt: MaxKey }})
|
{ "_id" : ObjectId("53ee2d5188dc69e2793b705b"), "y" : 1 }
|
> db.user.find({ x: { $gte: 0, $lt: MaxKey }})
|
> db.user.find({ x: { $gte: MinKey, $lt: 0 }})
|
> db.user.find({ x: { $gte: MinKey, $lt: MaxKey }}).explain()
|
{
|
"cursor" : "BtreeCursor x_1",
|
"isMultiKey" : false,
|
"n" : 1,
|
"nscannedObjects" : 1,
|
"nscanned" : 1,
|
"nscannedObjectsAllPlans" : 1,
|
"nscannedAllPlans" : 1,
|
"scanAndOrder" : false,
|
"indexOnly" : false,
|
"nYields" : 0,
|
"nChunkSkips" : 0,
|
"millis" : 0,
|
"indexBounds" : {
|
"x" : [
|
[
|
{
|
"$minElement" : 1
|
},
|
{
|
"$maxElement" : 1
|
}
|
]
|
]
|
},
|
"server" : "ren-desktop:27017"
|
}
|
> db.user.find({ x: { $gte: MinKey, $lt: 0 }}).explain()
|
{
|
"cursor" : "BtreeCursor x_1",
|
"isMultiKey" : false,
|
"n" : 0,
|
"nscannedObjects" : 0,
|
"nscanned" : 0,
|
"nscannedObjectsAllPlans" : 0,
|
"nscannedAllPlans" : 0,
|
"scanAndOrder" : false,
|
"indexOnly" : false,
|
"nYields" : 0,
|
"nChunkSkips" : 0,
|
"millis" : 0,
|
"indexBounds" : {
|
"x" : [
|
[
|
-Infinity,
|
0
|
]
|
]
|
},
|
"server" : "ren-desktop:27017"
|
}
|
> db.user.find({ x: { $gte: 0, $lt: MaxKey }}).explain()
|
{
|
"cursor" : "BtreeCursor x_1",
|
"isMultiKey" : false,
|
"n" : 0,
|
"nscannedObjects" : 0,
|
"nscanned" : 0,
|
"nscannedObjectsAllPlans" : 0,
|
"nscannedAllPlans" : 0,
|
"scanAndOrder" : false,
|
"indexOnly" : false,
|
"nYields" : 0,
|
"nChunkSkips" : 0,
|
"millis" : 0,
|
"indexBounds" : {
|
"x" : [
|
[
|
0,
|
Infinity
|
]
|
]
|
},
|
"server" : "ren-desktop:27017"
|
}
|
|