2

我正在使用带有 rails-api ( https://github.com/rails-api/rails-api ) 的 Mongoid (4.0.0.alpha2 )。

我正在寻找在我的模型中使用“范围”(http://mongoid.org/en/mongoid/docs/documents.html#fields)作为数据类型的示例。

我可以在数据类型为“Range”的字段上创建索引吗?

谢谢

4

1 回答 1

2

Range 被 mongoized(序列化)作为带有键 max 和 min[1] 的哈希,例如:

(0..10)

将存储在 MongoDB 中

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

所以是的,您可以在范围字段上创建索引,但您想使用 max 和 min 键创建索引:

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 回答