模块: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,则无论该属性的当前值是什么,都将返回最后保存到数据库的值。
96 97 98 99 100 101 102 103 104 105 |
# File 'lib/mongoid/shardable.rb', line 96 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>
注意:
通过使用委托进行重构以提高类加载性能。
获取分分片键字段。
47 48 49 |
# File 'lib/mongoid/shardable.rb', line 47 def shard_key_fields self.class.shard_key_fields end |
# shard_key_selector (prefer_persisted: false) ⇒哈希
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回与定义的分片键匹配的选择器。 如果 'prefer_persisted' 为 false(默认值),则使用指定分片键的当前值,否则,它将尝试使用最近持久保存的值。
63 64 65 66 67 |
# File 'lib/mongoid/shardable.rb', line 63 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 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
返回与数据库中此文档的现有版本匹配的选择器。
如果文档未持久化,则此方法将使用分片分片键字段的当前值。 如果文档是持久保存的,则此方法将使用从数据库中检索到的值。
79 80 81 |
# File 'lib/mongoid/shardable.rb', line 79 def shard_key_selector_in_db shard_key_selector(prefer_persisted: true) end |