在Mongoid中使用Range数据类型

时间:2014-02-04 02:51:15

标签: ruby mongoid rails-api

我使用带有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”的字段上创建索引吗?

由于

1 个答案:

答案 0 :(得分:2)

一个范围被mongoized(serizalized)作为哈希,其中包含键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/