t = db.geo_s2edgecases; t.drop(); roundworldpoint = { "type": "Point", "coordinates": [180, 0] }; // Opposite the equator roundworld = { "type": "Polygon", "coordinates": [[[179, 1], [-179, 1], [-179, -1], [179, -1], [179, 1]]] }; t.insert({geo: roundworld}); roundworld2 = { "type": "Polygon", "coordinates": [[[179, 1], [179, -1], [-179, -1], [-179, 1], [179, 1]]] }; t.insert({geo: roundworld2}); // North pole santapoint = { "type": "Point", "coordinates": [180, 90] }; santa = { "type": "Polygon", "coordinates": [[[179, 89], [179, 90], [-179, 90], [-179, 89], [179, 89]]] }; t.insert({geo: santa}); santa2 = { "type": "Polygon", "coordinates": [[[179, 89], [-179, 89], [-179, 90], [179, 90], [179, 89]]] }; t.insert({geo: santa2}); // South pole penguinpoint = { "type": "Point", "coordinates": [0, -90] }; penguin1 = { "type": "Polygon", "coordinates": [[[0, -89], [0, -90], [179, -90], [179, -89], [0, -89]]] }; t.insert({geo: penguin1}); penguin2 = { "type": "Polygon", "coordinates": [[[0, -89], [179, -89], [179, -90], [0, -90], [0, -89]]] }; t.insert({geo: penguin2}); t.ensureIndex({geo: "2dsphere", nonGeo: 1}); res = t.find({"geo": {"$geoIntersects": {"$geometry": roundworldpoint}}}); assert.eq(res.count(), 2); res = t.find({"geo": {"$geoIntersects": {"$geometry": santapoint}}}); assert.eq(res.count(), 2); res = t.find({"geo": {"$geoIntersects": {"$geometry": penguinpoint}}}); assert.eq(res.count(), 2);