ryanong / mongoid_spacial

A Mongoid Extention that simplifies and adds support for MongoDB Geo Spacial Calculations.
MIT License
138 stars 63 forks source link

Search using "near" seems to only return 100 results #12

Open moowahaha opened 12 years ago

moowahaha commented 12 years ago

For some reason, no matter how many matching documents I should have, I'm always getting max 100 results back.

where(
      :coordinates.near(:sphere) => {
          point: [some_longitude, some_latitude],
          max: search_radius,
          unit: :km
      }
).limit(9999).count #=> 100

A bit of reading reveals that the MongoDB Geospatial index will return 100 documents by default (http://www.mongodb.org/display/DOCS/Geospatial+Indexing). I can't seem to override it though. I'm looking into it now but thought I would raise it here in case somebody can figure it out before me.

FYI, I'm using mongoid_spacial 0.2.1, mongoid 2.3.3, mongo (gem) 1.4.0, MongoDB 1.8.2 & Ruby 1.9.3-p0.

jtescher commented 12 years ago

Same problem. Any resolution to this?

moowahaha commented 12 years ago

I worked around it by using the "within" scope...

 where(
   :coordinates.within(:center) => {
     point: [some_longitude, some_latitude],
     max: search_radius,
     unit: :km
   }
 ).limit(9999).count #=> 9999

The downside is that results are not ordered by distance from a point but it is slightly more performant.

jtescher commented 12 years ago

Yeah that seems to work I guess.

fltiago commented 11 years ago

@moowahaha Do you ordered your element in some way? I'm using near only because the order.