【发布时间】:2020-06-10 07:23:22
【问题描述】:
我有一个为我的文档创建新字段的工作,我想在这个工作结束时为这些字段创建索引。 我试过了
Model.index("field"=>-1)
还有
Mongoid::Sessions.default[:rating_prediction].ensureIndex
没有成功
这可能吗?
【问题讨论】:
我有一个为我的文档创建新字段的工作,我想在这个工作结束时为这些字段创建索引。 我试过了
Model.index("field"=>-1)
还有
Mongoid::Sessions.default[:rating_prediction].ensureIndex
没有成功
这可能吗?
【问题讨论】:
说Model.index(:field => -1),或多或少只是用Model注册索引的存在,它实际上并没有创建索引。你在找create_indexes:
- (true) <b>create_indexes</b>将实际的索引创建 cmets 发送到 MongoDB 驱动程序
所以你想说:
Model.index(field: -1)
Model.create_indexes
您也可以通过 Moped 直接创建它们,方法是在集合的 indexes 上调用 create:
Mongoid::Sessions.default[:models].indexes.create(field: -1)
Model.collection.indexes.create(field: 1)
# or in newer versions:
Model.collection.indexes.create_one(field: 1)
Mongoid::Sessions 在较新版本中已重命名为 Mongoid::Clients,因此您可能需要说:
Mongoid::Clients.default[:models].indexes.create(field: 1)
Model.collection.indexes.create(field: 1)
# or in even newer versions:
Model.collection.indexes.create_one(field: 1)
【讨论】:
Mongoid::Sessions 现在称为 Mongoid::Clients,
create_one,以便在Mongoid中动态创建唯一的复合索引:Model.collection.indexes.create_one({field: 1, another_field: 1}, {unique: true})
create_one:api.mongodb.com/ruby/2.0.6/Mongo/Index/…