1

私は現在、RubyonRailsアプリケーションにMongoidモデルを持っています。

class Listen
    include Mongoid::Document
    field :song_title, type: String
    field :song_artist, type: String
    field :loc, :type => Array
    field :listened_at, type: Time, default: -> { Time.now }

    index(
        [[:loc, Mongo::GEO2D]], background: true
    )
end

たとえば、コレクションをクエリしようとすると

listens = Listen.where(:loc => {"$within" => {"$centerSphere" => [location, (radius.fdiv(6371))]}})

エラーが返されます(場所は空白になり、Xは返されません)

Mongo::OperationFailure (can't find special index: 2d for: { loc: { $within: { $centerSphere: [ [ XX.XXXXXXX, X.XXXXXXX ], 0.0001569612305760477 ] } } }):

次のようなレーキタスクを使用してインデックスを作成できることはわかっていますrake db:mongoid:create_indexesが、モデルを作成するたびにこれを行う必要はありません。コレクションへの挿入時にモデルがこれを自動的に作成する方法はありますか?

4

1 に答える 1

1

いいえ、仕方がありません。

それを使用するには、(Geo だけでなく) インデックスを一度作成する必要があります。

于 2012-04-22T20:43:40.470 に答える