In 2.2.0 performing a find or $near on a geographic index with a secondary field to the geospatial will cause any exact locations queries to return nothing and $near will not have the exact match included in the results.
This only effects indexes with a second field in addition to the geographical field.
This issue doesn't occur under 2.0.7.
Example
Document:
{ "_id" : ObjectId("4f55fd08cee147f736000000"), "city" : "A", "lon_lat" : [ 1.48736, 42.55327 ], "population" : 100, }
{ "_id" : ObjectId("4f5606c4cee147f7362b8f59"), "city" : "B", "lon_lat" : [ -71.34895, 42.46037 ], "population" : 1000, }
Index:
{ "v" : 1, "key" : { "lon_lat" : "2d", "population" : -1 }, "ns" : "test.location_categories", "min" : -180, "max" : 181, "background" : true, "name" : "lon_lat_2d_population_-1" }
Query:
db.location_categories.find({lon_lat : {$near : [-71.34895, 42.46037] } });
Query 2:
db.location_categories.find({lon_lat : [-71.34895, 42.46037] })
Given the query we should match city B as it is at the co-ordinates, but is not being returned.