MongoMapper附近有maxDistance - Mongo :: OperationFailure:geo值必须是数字:

Nic*_*ick 4 geospatial mongodb mongomapper

我试图在MongoMapper支持的模型中使用maxDistance封装near查询.

我必须在查询语法中做一些愚蠢的事情.

模型

class Site
  include MongoMapper::Document

  key :id, Integer 
  key :name, String
  key :location, Array
  ensure_index [[:location, '2d']]


  def self.nearest(center_point, range)
    where(:location => {'$near' => center_point, '$maxDistance' => range}).all
  end

end
Run Code Online (Sandbox Code Playgroud)

试图把距离一点200英里的所有东西都拿走......

Site.nearest([ - 122.0,44.0],200)

> Mongo::OperationFailure: geo values have to be numbers: {
> $maxDistance: 200, $near: [ -122.0, 44.0 ] }  from
> /Library/Ruby/Gems/1.8/gems/mongo-1.6.1/lib/mongo/cursor.rb:144:in
> `next'    from
> /Library/Ruby/Gems/1.8/gems/mongo-1.6.1/lib/mongo/cursor.rb:290:in
> `each'    from
> /Library/Ruby/Gems/1.8/gems/mongo-1.6.1/lib/mongo/cursor.rb:308:in
> `to_a'    from
> /Library/Ruby/Gems/1.8/gems/mongo-1.6.1/lib/mongo/cursor.rb:308:in
> `to_a'    from
> /Library/Ruby/Gems/1.8/gems/plucky-0.4.4/lib/plucky/query.rb:74:in
> `all'     from /Users/nick/Code/web/map/app/models/site.rb:40:in
> `nearest'     from (irb):
Run Code Online (Sandbox Code Playgroud)

Dav*_*one 12

您可能遇到过这个需要$near$maxDistance首先订购的错误$maxDistance.

在任何情况下,我都发现了这个问题,因为我OperationFailure: database error: geo values have to be number在使用PyMongo时得到了这个问题,并且交换顺序修复了它.