使用mongoid动态创建索引

时间:2014-03-21 21:44:20

标签: ruby mongodb mongoid

我有一份工作可以为我的文档创建新字段,我希望在这项工作结束时为这些字段创建索引。 我试过了

Model.index("field"=>-1)

以及

Mongoid::Sessions.default[:rating_prediction].ensureIndex

没有成功

这可能吗?

1 个答案:

答案 0 :(得分:15)

或多或少地说Model.index(:field => -1)只是用Model来记录索引的存在,它实际上并不创建索引。您正在寻找create_indexes

  

- (true) create_indexes

     

将实际索引创建注释发送到MongoDB驱动程序

所以你想说:

Model.index(:field => -1)
Model.create_indexes

您也可以通过调用集合create上的indexes直接通过Moped创建它们:

Mongoid::Sessions.default[:models].indexes.create(:field => 1)
Model.collection.indexes.create(:field => 1)

Mongoid::Sessions已在较新版本中重命名为Mongoid::Clients,因此您可能需要说:

Mongoid::Clients.default[:models].indexes.create(:field => 1)
Model.collection.indexes.create(:field => 1)

感谢js_注意到此更改。