模块:Mongoid::Shardable
Overview
此模块包含在更新中添加分片键字段的行为。
在命名空间下定义
模块: 类方法
实例方法摘要折叠
-
# shard_key_field_value (字段, prefer_persisted:) ⇒ 对象
private
返回指定分分片键的值。
-
# shard_key_fields ⇒ Array<String>
获取分分片键字段。
-
# shard_key_selector (prefer_persisted: false) ⇒ 哈希
private
返回与定义的分分片键匹配的选择器。
-
# shard_key_selector_in_db ⇒ 哈希
private
返回与数据库中此文档的现有版本匹配的选择器。
实例方法详细信息
# shard_key_field_value (字段, prefer_persisted:) ⇒对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回指定分片键的值。如果该字段标识嵌入式文档,则会对该键进行解析并递归求值。如果 prefer_persisted 为 true,则无论属性的当前值是什么,都将返回最后保存到数据库的值。
94 95 96 97 98 99 100 101 102 103 |
# File 'lib/mongoid/shardable.rb', line 94 def shard_key_field_value(字段, prefer_persisted:) if 字段.包括?(' 。 ') 关系, 剩余 = 字段.拆分(' 。 ', 2) 发送(关系)&。shard_key_field_value(剩余, prefer_persisted: prefer_persisted) elsif prefer_persisted && !new_record? attribute_was(字段) else 发送(字段) end end |
# shard_key_fields ⇒ Array<String>
注意:
通过使用委托进行重构以提高类加载性能。
获取分分片键字段。
45 46 47 |
# File 'lib/mongoid/shardable.rb', line 45 def shard_key_fields self.class.shard_key_fields end |
# shard_key_selector (prefer_persisted: false) ⇒哈希
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回与定义的分片键匹配的选择器。如果 prefer_persisted 为 false(默认),则使用指定分片键的当前值,否则,它将尝试使用最近保留的任何值。
61 62 63 64 65 |
# File 'lib/mongoid/shardable.rb', line 61 def shard_key_selector(prefer_persisted: false) shard_key_fields.each_with_object({}) do |字段, 选择器| 选择器[字段.to_s] = shard_key_field_value(字段.to_s, prefer_persisted: prefer_persisted) end end |
# shard_key_selector_in_db ⇒哈希
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回与数据库中此文档的现有版本匹配的选择器。
如果文档未持久化,则此方法将使用分片分片键字段的当前值。 如果文档是持久保存的,则此方法将使用从数据库中检索到的值。
77 78 79 |
# File 'lib/mongoid/shardable.rb', line 77 def shard_key_selector_in_db shard_key_selector(prefer_persisted: true) end |