void GeoSearch::addExactPoints(const GeoPoint& pt, Holder& points, int& before, int& after, bool force){ before = 0; after = 0; if(pt.isExact()){ if(force) points.insert(pt); return; } vector<BSONObj> locs; // last argument is uniqueDocs getPointsFor(pt.key(), pt.obj(), locs, true); GeoPoint nearestPt(pt, -1, true); for(vector<BSONObj>::iterator i = locs.begin(); i != locs.end(); i++){ Point loc(*i); double d; if(! exactDocCheck(loc, d)) continue; if(nearestPt.distance() < 0 || d < nearestPt.distance()){ nearestPt._distance = d; nearestPt._pt = *i; continue; } } if(nearestPt.distance() >= 0){ points.insert(nearestPt); if(nearestPt < pt) before++; else after++; } }