2013-07-14 5 views
5

Procedura per riprodurre:Mongoid "nessun indice geo :(" errore

class Venue 
    field :coordinates, type: Array 
    index({coordinates: '2d'}, {min: -180, max: 180}) 
end 

ho fatto funzionare rake db: mongoid: create_indexes

provato a chiamare:

Venue.geo_near([@lat, @long]) 

e ottenuto:

Moped::Errors::OperationFailure: 
    The operation: #<Moped::Protocol::Command 
    @length=135 
    @request_id=3 
    @response_to=0 
    @op_code=2004 
    @flags=[] 
    @full_collection_name="encore_backend_test.$cmd" 
    @skip=0 
    @limit=-1 
    @selector={:geoNear=>"venues", :near=>[43.670906, -79.393331], :query=>{}, :spherical=>true} 
    @fields=nil> 
    failed with error "no geo index :(" 

Qualche suggerimento?

+1

Si ha lat e lungo il modo sbagliato in '' 'Venue.geo_near ([@ lat, @long]) '' 'e anche nel tuo errore dump. Si prega di prendere in considerazione l'uso dell'indice 2dsphere, in quanto implementa anche un vero indice geografico sferico. – Derick

risposta

14

stupido errore, ha dimenticato di fare rake db:mongoid:create_indexes con RAILS_ENV=test per RSpec

comando completo

bundle exec rake db:mongoid:create_indexes RAILS_ENV=test 
+0

che mi ha salvato il tempo ... accettato – Sai

+0

Grazie per aver chiesto e risposto all'uomo. Non sapevo nemmeno di doverlo fare. È ambientato da qualche parte nei documenti di mongoid? – JGutierrezC