使用mongoid动态创建索引

Che*_*rot 10 ruby mongodb mongoid

我有一个工作,为我的文档创建新的字段,我希望,在这个工作结束时,为这个字段创建索引.我试过了

Model.index("field"=>-1)
Run Code Online (Sandbox Code Playgroud)

并且

Mongoid::Sessions.default[:rating_prediction].ensureIndex
Run Code Online (Sandbox Code Playgroud)

没有成功

这可能吗?

mu *_*ort 16

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

- (true) create_indexes

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

所以你想说:

Model.index(:field => -1)
Model.create_indexes
Run Code Online (Sandbox Code Playgroud)

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

Mongoid::Sessions.default[:models].indexes.create(:field => 1)
Model.collection.indexes.create(:field => 1)
Run Code Online (Sandbox Code Playgroud)

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

Mongoid::Clients.default[:models].indexes.create(:field => 1)
Model.collection.indexes.create(:field => 1)
Run Code Online (Sandbox Code Playgroud)

感谢js_注意到这一变化.

  • 为了将来参考`Mongoid :: Sessions`现在称为`Mongoid :: Clients`, (2认同)