私は現在のようなRuby on RailsアプリケーションでMongoidモデルを持っている:私はMongoDBはジオロケーションデータの特殊インデックスを自動的に生成できますか?
listens = Listen.where(:loc => {"$within" => {"$centerSphere" => [location, (radius.fdiv(6371))]}})
例えば、コレクションを照会しようとすると、私はエラー(場所が空白にされている
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
返されていますうち、Xさんは
Mongo::OperationFailure (can't find special index: 2d for: { loc: { $within: { $centerSphere: [ [ XX.XXXXXXX, X.XXXXXXX ], 0.0001569612305760477 ] } } }):
は私がrakeタスクなどrake db:mongoid:create_indexes
てインデックスを作成作成することができます知っている)が返されていませんが、私はワシントン州ませんモデルが作成されるたびにこれを行う必要があります。モデルがコレクションに挿入すると自動的にこれを作成する方法はありますか?
モデルインスタンスをコレクションに保存した後にインデックスを作成する必要はありません。あなたがしなければならないことは、あなたが見ていることですか?モデルを定義するときに一度実行する必要があります。 –
モデルを作成した後、BSON IDが作成されますが、上記のようなコレクションに対してクエリを実行しようとすると、「特殊インデックスが見つかりません」というエラーがスローされます。 – joshcollie