1

我目前在 Ruby on Rails 应用程序中有一个 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 任务创建索引,rake db:mongoid:create_indexes但我不想每次创建模型时都必须这样做。模型有什么方法可以在插入集合时自动创建它?

4

1 回答 1

1

不,没有办法。

您必须创建一次索引(不仅仅是 Geo),才能使用它。

于 2012-04-22T20:43:40.470 回答