Mongoid 索引和验证
Mongoid indexes and validations
我有一个 Rails 5 / Mongoid 7 应用程序,可以解析文件并将内容添加到数据库。处理每个文件后解析花费的时间越来越多,我认为这是因为我在其中一个字段上有一个 validates_uniqueness_of
,随着集合变大,验证需要检查更大的集合,这是有道理的.
所以我认为在该字段上创建索引会有所帮助,但我想知道我是否仍应将 validates_uniqueness_of
保留在那里,还是应该将其删除?
似乎在任何地方都找不到相关信息。
型号:
class SomeModel
include Mongoid::Document
include Mongoid::Timestamps
field :some_field, type: String
index({ some_field: 1 }, { unique: true, name: "some_field_index" })
validates_uniqueness_of :some_field, { case_sensitive: false }
end
注意:我已经 运行 rake db:mongoid:create_indexes
但我还没有尝试过新的解析,想知道如何先处理这个。
所以我已经 运行 进行了几次测试,添加索引对处理时间产生了巨大的影响,我会在这里留下我的答案以供后代使用。
可以删除 validates_uniqueness_of
,尽管现在字段的唯一性由索引处理,因此在尝试保存文档时不会出现验证错误,而是抛出异常,所以我有要更改一些处理文档创建的代码的方式,如果您必须处理类似情况,请记住这一点。
我有一个 Rails 5 / Mongoid 7 应用程序,可以解析文件并将内容添加到数据库。处理每个文件后解析花费的时间越来越多,我认为这是因为我在其中一个字段上有一个 validates_uniqueness_of
,随着集合变大,验证需要检查更大的集合,这是有道理的.
所以我认为在该字段上创建索引会有所帮助,但我想知道我是否仍应将 validates_uniqueness_of
保留在那里,还是应该将其删除?
似乎在任何地方都找不到相关信息。
型号:
class SomeModel
include Mongoid::Document
include Mongoid::Timestamps
field :some_field, type: String
index({ some_field: 1 }, { unique: true, name: "some_field_index" })
validates_uniqueness_of :some_field, { case_sensitive: false }
end
注意:我已经 运行 rake db:mongoid:create_indexes
但我还没有尝试过新的解析,想知道如何先处理这个。
所以我已经 运行 进行了几次测试,添加索引对处理时间产生了巨大的影响,我会在这里留下我的答案以供后代使用。
可以删除 validates_uniqueness_of
,尽管现在字段的唯一性由索引处理,因此在尝试保存文档时不会出现验证错误,而是抛出异常,所以我有要更改一些处理文档创建的代码的方式,如果您必须处理类似情况,请记住这一点。