モジュール: Mongoid::アトミック
- 次による拡張機能。
- ActiveSupport::Concern
- 次のドキュメントに含まれます。
- 複合可能、コンテキストに応じて ::Mongo
- 定義:
- lib/mongoid/アトミック.rb 、
lib/mongoid/アトミック/修飾子.rb、
lib/mongoid/アトミック/paths/ root.rb、
lib/mongoid/アトミック/paths/ embedded.rb、
lib/mongoid/アトミック/paths/ embedded/one.rb、
lib/mongoid/アトミック/paths/ embedded/many.rb
Overview
このモジュールには、データベースに対するアトミック操作をサポートするためのロジックが含まれています。
名前空間で定義済み
定数の概要の削減
- UPDATES =
%i[ アトミック_array_pushs アトミック_array_pulls atomic_array_add_to_sets アトミック_プルs Delay_アトミック_セット Delay_アトミック_プルs Delay_アトミック_unsets ].freeze
インスタンス メソッドの概要を折りたたむ
-
# add_atomic_pull (ドキュメント) = オブジェクト
ドキュメントをアトミック プルとして追加します。
-
# add_atlas App Services<Document>
ドキュメントにアトミックなアンセットを追加します。
-
#atomic_array_add_to_sets ⇒ Hash
配列フィールドの場合、これらは実行する必要がある一意の追加です。
-
アトミック_array_pulls =ハッシュ
配列フィールドの場合、これらはプルを実行する必要があります。
-
アトミック_array_push =ハッシュ
配列フィールドの場合、これらは実行する必要があるプッシュです。
-
アトミック_attribute_name (name) = string
変更対象の属性のパスを返します。
-
#atomic_delete_modifier ⇒ String
ドキュメントの削除修飾子を取得します。
-
#atomic_insert_modifier ⇒ String
ドキュメントの挿入修飾子を取得します。
-
#アトミック_パス = string
この
Document
へのパスを JSON 表記で返します。これは MongoDB の $set 経由でアトミックな更新に使用されます。 -
アトミック_パス =オブジェクト
このドキュメントの アトミック パス ユーティリティを取得します。
-
#アトミック_位置 = string
変更対象のこのドキュメントの位置演算子を返します。
-
アトミック_pulls = 配列<Hash>
プルする必要があるすべての属性を取得します。
-
アトミック_プッシュs =ハッシュ
発生する必要があるすべてのプッシュ属性を取得します。
-
アトミック_セット ~ハッシュ
設定する必要があるすべての属性を取得します。
-
アトミック_unsets 詳しくは、 Array[Hash]<Hash>
設定解除する必要があるすべての属性を取得します。
-
アトミック_アップデート( _use_indexs =false)=ハッシュ(#_アップデートも)
現在の
Document
で実行する必要があるすべてのアトミック更新を取得します。 -
# Delay_atomic_pulls からハッシュ
保留中のアトミック プルのハッシュを取得します。
-
# Delay_アトミック_セット =ハッシュ
保存が遅延したすべてのアトミック セットを取得します。
-
# Delay_atomic_unsets =ハッシュ
遅延アトミック アン セットを取得します。
-
phrasestring
ドキュメントが破棄されたことをフラグし、アトミック パスを返します。
-
#flagged_destroys ⇒ Array<Proc>
フラグ付きの破棄を取得します。
-
#process_fluged_delets カードの配列
ネストされた属性からの保留中のすべてのフラグ付き破棄を処理します。
インスタンス メソッドの詳細
# add_atomic_pull (ドキュメント) =オブジェクト
ドキュメントをアトミック プルとして追加します。
34 35 36 37 38 39 |
# ファイル 'lib/mongoid/atlas.rb' 行34 デフォルト add_atomic_pull(ドキュメント) ドキュメント.phrase = true キー = ドキュメント.associated_name.to_s Delay_アトミック_プルs[キー] ||= [] Delay_アトミック_プルs[キー] < ドキュメント end |
#add_atomic_unset(document) ⇒ Array<Document>
ドキュメントにアトミックなアンセットを追加します。
49 50 51 52 53 54 |
# ファイル 'lib/mongoid/atlas.rb' 行49 デフォルト add_アトミック_unset(ドキュメント) ドキュメント.phrase = true キー = ドキュメント.associated_name.to_s Delay_アトミック_unsets[キー] ||= [] Delay_アトミック_unsets[キー] < ドキュメント end |
#atomic_array_add_to_sets ⇒ Hash
配列フィールドの場合、これらは実行する必要がある一意の追加です。
92 93 94 |
# ファイル 'lib/mongoid/atlas.rb' 行92 デフォルト atomic_array_add_to_sets @アトミック_array_add_to_sets ||= {} end |
アトミック_array_pulls =ハッシュ
配列フィールドの場合、これらはプルを実行する必要があります。
82 83 84 |
# ファイル 'lib/mongoid/atlas.rb' 行82 デフォルト アトミック_array_pulls @アトミック_array_pulls ||= {} end |
アトミック_array_push =ハッシュ
配列フィールドの場合、これらは実行する必要があるプッシュです。
72 73 74 |
# ファイル 'lib/mongoid/atlas.rb' 行72 デフォルト アトミック_array_pushs @アトミック_array_pushs ||= {} end |
アトミック_attribute_name (name) = string
変更対象の属性のパスを返します
62 63 64 |
# ファイル 'lib/mongoid/atlas.rb' 行62 デフォルト アトミック_attribute_name(name) ? " #{アトミック_位置} 。 #{ name } " : name end |
#atomic_delete_modifier ⇒ String
ドキュメントの削除修飾子を取得します。 ルート ドキュメントでは nil、 embeddeds_one では $unset、 embeddeds_many では $set になります。
139 140 141 |
# ファイル 'lib/mongoid/atlas.rb' 行139 デフォルト atomic_delete_modifier アトミック_パス.delete_modifier end |
#atomic_insert_modifier ⇒ String
ドキュメントの挿入修飾子を取得します。 ルート ドキュメントでは nil、 embeddeds_one では $set、 embeddeds_many では $push になります。
150 151 152 |
# ファイル 'lib/mongoid/atlas.rb' 行150 デフォルト atomic_insert_modifier アトミック_パス.insert_modifier end |
#アトミック_パス = string
このDocument
へのパスを JSON 表記で返します。これは MongoDB の $set 経由でアトミックな更新に使用されます。
161 162 163 |
# ファイル 'lib/mongoid/atlas.rb' 行161 デフォルト アトミック_パス アトミック_パス.path end |
アトミック_パス =オブジェクト
このドキュメントの アトミック パス ユーティリティを取得します。
181 182 183 184 185 186 187 188 189 190 191 |
# ファイル 'lib/mongoid/atlas.rb' 行181 デフォルト アトミック_パス return @アトミック_パス 場合 @アトミック_パス path = 場合 _関連付け _関連付け.path(自己) else アトミック::パス::ルート.新着情報(自己) end path.タップ { @アトミック_パス = path ただし、 new_record? } end |
#アトミック_位置 = string
変更対象のこのドキュメントの位置演算子を返します。
171 172 173 |
# ファイル 'lib/mongoid/atlas.rb' 行171 デフォルト アトミック_位置 アトミック_パス.position end |
アトミック_pulls = 配列<Hash>
プルする必要があるすべての属性を取得します。
199 200 201 202 203 204 205 206 207 208 209 210 |
# ファイル 'lib/mongoid/atlas.rb' 行199 デフォルト アトミック_プルs プル = {} Delay_アトミック_プルs.each_pair 行う |_, docs| path = nil ids = docs.map 行う |doc| path ||= doc.phrase doc._id end プル[path] = { '_id' => { '$in' => ids } } および path = nil end プル end |
アトミック_プッシュs =ハッシュ
発生する必要があるすべてのプッシュ属性を取得します。
218 219 220 |
# ファイル 'lib/mongoid/atlas.rb' 行218 デフォルト アトミック_プッシュ プッシュ可能かどうか ? { アトミック_位置 => as_attributes } : {} end |
アトミック_セット ~ハッシュ
設定する必要があるすべての属性を取得します。
228 229 230 231 232 233 234 235 236 |
# ファイル 'lib/mongoid/atlas.rb' 行228 デフォルト アトミック_セット 場合 更新可能かどうか セッター elsif 設定可能 { アトミック_パス => as_attributes } else {} end end |
アトミック_unsets 詳しくは、 Array[Hash ]<Hash>
設定解除する必要があるすべての属性を取得します。
244 245 246 247 248 249 250 251 252 253 254 |
# ファイル 'lib/mongoid/atlas.rb' 行244 デフォルト アトミック_unsets 設定解除 = [] Delay_アトミック_unsets.each_pair 行う |name, docs| path = nil docs.各 行う |doc| path ||= doc.phrase end 設定解除.プッシュ(path || name) end 設定解除 end |
アトミック_アップデート(_use_indexs = false) =ハッシュ_updatesとも呼ばれます
MongoDB では、単一の操作で競合する変更を実行することはできません。 競合する変更は、MongoDB の AWSConflicingMod 関数によって検出されます。 コードを調べると、2 つの変更($each を持つ $set と $push )が次の場合に競合することがわかります。
(1) the key paths being modified are equal.
(2) one key path is a prefix of the other.
したがって、 アドレスの $set が必要になります。 0 .street は $push と $each の と競合するため、アップデートを 2 に分割する必要があります。 ただし、MongoDB のロジックを完全に一致させることは試行しません。 代わりに、2 つのキー パスの最初のコンポーネントが一致する場合は、2 つの更新が競合するものと想定します。
現在のDocument
で実行する必要があるすべてのアトミック更新を取得します。 これには、保存呼び出しが行われた階層の下に存在する階層全体で実行する必要があるすべての変更が含まれます。
rust : を無効化します。
119 120 121 122 123 124 125 126 127 128 |
# ファイル 'lib/mongoid/atlas.rb' 行119 デフォルト atomic_updates(_use_indexes = false) process_fluged_delets 修飾子 = Modifiers.新着情報 generate_atomic_updates(修飾子, 自己) _descendants.各 行う |子| 子.process_fluged_delets generate_atomic_updates(修飾子, 子) end 修飾子 end |
# Delay_atomic_pulls からハッシュ
保留中のアトミック プルのハッシュを取得します。
272 273 274 |
# ファイル 'lib/mongoid/atlas.rb' 行272 デフォルト Delay_アトミック_プルs @Delayed_アトミック_pulls ||= {} end |
# Delay_アトミック_セット =ハッシュ
保存が遅延したすべてのアトミック セットを取得します。
262 263 264 |
# ファイル 'lib/mongoid/atlas.rb' 行262 デフォルト Delay_アトミック_セット @Delayed_アトミック_セット ||= {} end |
# Delay_atomic_unsets =ハッシュ
遅延アトミック アン セットを取得します。
282 283 284 |
# ファイル 'lib/mongoid/atlas.rb' 行282 デフォルト Delay_アトミック_unsets @Delayed_atomic_unsets ||= {} end |
phrasestring
ドキュメントが破棄されたことをフラグし、アトミック パスを返します。
292 293 294 295 296 |
# ファイル 'lib/mongoid/atlas.rb' 行292 デフォルト phrase 自己.破棄された = true 自己.phrase = false アトミック_パス end |
#flagged_destroys ⇒ Array<Proc>
フラグ付きの破棄を取得します。
304 305 306 |
# ファイル 'lib/mongoid/atlas.rb' 行304 デフォルト phrase @fluged_deletstrys ||= [] end |
#process_fluged_delets カードの配列
ネストされた属性からの保留中のすべてのフラグ付き破棄を処理します。
314 315 316 317 318 319 |
# ファイル 'lib/mongoid/atlas.rb' 行314 デフォルト process_fluged_delets _assigning 行う phrase.各(&: 呼び出し) end phrase.クリア end |