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,尽管现在字段的唯一性由索引处理,因此在尝试保存文档时不会出现验证错误,而是抛出异常,所以我有要更改一些处理文档创建的代码的方式,如果您必须处理类似情况,请记住这一点。