2

rails-api ( https://github.com/rails-api/rails-api )で Mongoid (4.0.0.alpha2) を使用しています。

モデルのデータ型として「Range」( http://mongoid.org/en/mongoid/docs/documents.html#fields )を使用する例を探しています。

データ型が「Range」のフィールドにインデックスを作成できますか?

ありがとう

4

1 に答える 1

2

Range は、キー max と min[1] を持つハッシュとしてモンゴ化 (シリアル化) されます。例:

(0..10)

としてMongoDBに保存されます

{"max": 10, "min": 0}

はい、範囲フィールドにインデックスを作成できますが、最大キーと最小キーを使用してインデックスを作成したいと考えています。

index(:"myfield.max" =>  1, :"myfield.min" => 1)

ハッシュ (myfield) に対してインデックスを作成すると、[2] のようなクエリでは使用されないためです。

MyDocument.where(:"myfield.min" => {:$gte => 1}, :"myfield.max" => {:$lte => 9})

[1] https://github.com/mongoid/mongoid/blob/1f8e12c5b03da1c9bd49bab12d86bef969868fb3/lib/mongoid/extensions/range.rb#L73

[2] http://docs.mongodb.org/manual/core/index-hashed/

于 2014-11-03T15:05:16.357 に答える