2013-07-14 12 views
5

Kroki do odtworzenia:Mongoid "bez indeksu geo :(" Błąd

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

mam przebiegła rake db: mongoid: create_indexes

Próbowaliśmy dzwonić:

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

I got:

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 :(" 

Jakieś sugestie?

+1

Macie łac i długą złą drogę w '' 'Venue.geo_near ([@ lat, @long]) '' ', a także w twoim pliku błędów. Proszę rozważyć użycie indeksu 2dsphere, ponieważ implementuje on również prawdziwy sferyczny indeks geograficzny. – Derick

Odpowiedz

14

głupi błąd, zapomniałem zrobić grabie db:mongoid:create_indexes z RAILS_ENV=test dla RSpec

Kompletna poleceń

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

, który zaoszczędził mój czas ... przyjął – Sai

+0

Dziękuję za pytanie i odpowiedź. Nawet nie wiedziałem, że muszę to zrobić. Czy to jest gdzieś w dokumentach Mongoida? – JGutierrezC