Hide
> db.foo.drop()
|
true
|
> db.foo.insert({a: 1, "location" : [ -117.15, 32.88 ]})
|
WriteResult({ "nInserted" : 1 })
|
> db.foo.insert({a: 2, "location" : [ -117.15, 32.88 ]})
|
WriteResult({ "nInserted" : 1 })
|
> db.foo.insert({a: 3, "location" : [ -117.15, 32.88 ]})
|
WriteResult({ "nInserted" : 1 })
|
> db.foo.ensureIndex({location: "2d"})
|
{
|
"createdCollectionAutomatically" : false,
|
"numIndexesBefore" : 1,
|
"numIndexesAfter" : 2,
|
"ok" : 1
|
}
|
In the query below, we request documents where b exists. As expected, we get 0 results.
> db.foo.find({location: { $nearSphere: [ -117.2684194, 33.1029176 ], $maxDistance: 0.02526017985248055 }, b: { $exists: true}})
|
# no results (expected)
|
When an index is added on (location, b), all documents are returned when $exists: true is set for b, which is incorrect.
> db.foo.ensureIndex({location: "2d", b: 1})
|
{
|
"createdCollectionAutomatically" : false,
|
"numIndexesBefore" : 2,
|
"numIndexesAfter" : 3,
|
"ok" : 1
|
}
|
> db.foo.find({location: { $nearSphere: [ -117.2684194, 33.1029176 ], $maxDistance: 0.02526017985248055 }, b: { $exists: true}}).hint("location_2d_b_1")
|
{ "_id" : ObjectId("562524f65a47d987934ec69b"), "a" : 1, "location" : [ -117.15, 32.88 ] }
|
{ "_id" : ObjectId("562524fb5a47d987934ec69c"), "a" : 2, "location" : [ -117.15, 32.88 ] }
|
{ "_id" : ObjectId("562525005a47d987934ec69d"), "a" : 3, "location" : [ -117.15, 32.88 ] }
|
Show
> db.foo.drop()
true
> db.foo.insert({a: 1, "location" : [ -117.15, 32.88 ]})
WriteResult({ "nInserted" : 1 })
> db.foo.insert({a: 2, "location" : [ -117.15, 32.88 ]})
WriteResult({ "nInserted" : 1 })
> db.foo.insert({a: 3, "location" : [ -117.15, 32.88 ]})
WriteResult({ "nInserted" : 1 })
> db.foo.ensureIndex({location: "2d"})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 1,
"numIndexesAfter" : 2,
"ok" : 1
}
In the query below, we request documents where b exists. As expected, we get 0 results.
> db.foo.find({location: { $nearSphere: [ -117.2684194, 33.1029176 ], $maxDistance: 0.02526017985248055 }, b: { $exists: true}})
# no results (expected)
When an index is added on (location, b), all documents are returned when $exists: true is set for b, which is incorrect.
> db.foo.ensureIndex({location: "2d", b: 1})
{
"createdCollectionAutomatically" : false,
"numIndexesBefore" : 2,
"numIndexesAfter" : 3,
"ok" : 1
}
> db.foo.find({location: { $nearSphere: [ -117.2684194, 33.1029176 ], $maxDistance: 0.02526017985248055 }, b: { $exists: true}}).hint("location_2d_b_1")
{ "_id" : ObjectId("562524f65a47d987934ec69b"), "a" : 1, "location" : [ -117.15, 32.88 ] }
{ "_id" : ObjectId("562524fb5a47d987934ec69c"), "a" : 2, "location" : [ -117.15, 32.88 ] }
{ "_id" : ObjectId("562525005a47d987934ec69d"), "a" : 3, "location" : [ -117.15, 32.88 ] }