- 
    Type:Bug 
- 
    Resolution: Done
- 
    Priority:Major - P3 
- 
    None
- 
    Affects Version/s: 2.6.5
- 
    Component/s: Geo
- 
    None
- 
        Fully Compatible
- 
        ALL
- 
        None
- 
        None
- 
        None
- 
        None
- 
        None
- 
        None
- 
        None
I'm creating a collection with 1000 random points roughly in the area where Canada would be on the globe:
for (i=0; i<1000; i++) {
   var lon = -25 - Math.random() * 75;
   var lat = 35 + Math.random() * 35;
   db.data.insert({"loc": { "type" : "Point",
                             "coordinates" : [ lon, lat ] } });
}
In other words, longitude is between -100 and -25, and latitude is between 35 and 70. I'm defining a 2dsphere index on it:
db.data.ensureIndex({"loc":"2dsphere"})
and then query with a bounding rectange that should encompass all the points:
db.data.find({"loc":
  {"$geoWithin":
    {"$geometry":{"type":"Polygon",
                  "coordinates":[[[-110, 30], [-110, 75], [-20, 75], [-20, 30], [-110, 30]]]}}}}
)
(The polygon runs from -110 to -20 longitude and 30 to 75 latitude.) However, the query does not return all 1000 documents (in one particular example, I only got 919). If I make the rectangle even larger, it actually returns even less documents. This can be confirmed both by .count() and .toArray().length.
Is there anything wrong in my setup or assumptions how $geoWithin works?
- related to
- 
                    SERVER-19328 $geoIntersects does not work as expected -         
- Closed
 
-