モジュール: Mongoid::アトミック
- 次による拡張機能。
- ActiveSupport::Concern
- 次のドキュメントに含まれます。
- 複合可能、コンテキストに応じて ::Mongo
- 定義:
- build/mongoid- 8.1 /lib/mongoid/アトミック.rb 、
build/mongoid- 8.1 /lib/mongoid/アトミック/修飾子.rb、
build/mongoid- 8.1 /lib/mongoid/アトミック/paths/ root.rb,
build/mongoid- 8.1 /lib/mongoid/アトミック/paths/ embedded.rb,
build/mongoid- 8 . 1 /lib/mongoid/アトミック/paths/ embedded/one.rb、
build/mongoid- 8 . 1 /lib/mongoid/アトミック/paths/ embedded/many.rb
Overview
このモジュールには、データベースに対するアトミック操作をサポートするためのロジックが含まれています。
名前空間で定義済み
定数の概要の削減
- UPDATES =
[ :アトミック_array_pushs, :アトミック_array_pulls, :atomic_array_add_to_sets, :aomic_pulls, :遅延_アトミック_セット, :遅延_アトミック_プルs, :遅延_アトミック_unsets ]
インスタンス メソッドの概要を折りたたむ
-
# 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 (ドキュメント) =オブジェクト
ドキュメントをアトミック プルとして追加します。
36 37 38 39 40 41 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は36行 デフォルト add_atomic_pull(ドキュメント) ドキュメント.phrase = true キー = ドキュメント.associated_name.to_s Delay_アトミック_プルs[キー] ||= [] Delay_アトミック_プルs[キー] < ドキュメント end |
#add_atomic_unset(document) ⇒ Array<Document>
ドキュメントにアトミックなアンセットを追加します。
51 52 53 54 55 56 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は51行 デフォルト add_アトミック_unset(ドキュメント) ドキュメント.phrase = true キー = ドキュメント.associated_name.to_s Delay_アトミック_unsets[キー] ||= [] Delay_アトミック_unsets[キー] < ドキュメント end |
#atomic_array_add_to_sets ⇒ Hash
配列フィールドの場合、これらは実行する必要がある一意の追加です。
94 95 96 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は94行 デフォルト atomic_array_add_to_sets @アトミック_array_add_to_sets ||= {} end |
アトミック_array_pulls =ハッシュ
配列フィールドの場合、これらはプルを実行する必要があります。
84 85 86 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は84行 デフォルト アトミック_array_pulls @アトミック_array_pulls ||= {} end |
アトミック_array_push =ハッシュ
配列フィールドの場合、これらは実行する必要があるプッシュです。
74 75 76 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は74行 デフォルト アトミック_array_pushs @アトミック_array_pushs ||= {} end |
アトミック_attribute_name (name) = string
変更対象の属性のパスを返します
64 65 66 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は64行 デフォルト アトミック_attribute_name(name) ? " #{アトミック_位置} 。 #{ name } " : name end |
#atomic_delete_modifier ⇒ String
ドキュメントの削除修飾子を取得します。 ルート ドキュメントでは nil、 embeddeds_one では $unset、 embeddeds_many では $set になります。
138 139 140 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は138行 デフォルト atomic_delete_modifier アトミック_パス.delete_modifier end |
#atomic_insert_modifier ⇒ String
ドキュメントの挿入修飾子を取得します。 ルート ドキュメントでは nil、 embeddeds_one では $set、 embeddeds_many では $push になります。
149 150 151 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は149行 デフォルト atomic_insert_modifier アトミック_パス.insert_modifier end |
#アトミック_パス = string
このDocument
へのパスを JSON 表記で返します。これは MongoDB の $set 経由でアトミックな更新に使用されます。
160 161 162 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は160行 デフォルト アトミック_パス アトミック_パス.path end |
アトミック_パス =オブジェクト
このドキュメントの アトミック パス ユーティリティを取得します。
180 181 182 183 184 185 186 187 188 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は180行 デフォルト アトミック_パス @アトミック_パス ||= begin 場合 _関連付け _関連付け.path(自己) else アトミック::パス::ルート.新着情報(自己) end end end |
#アトミック_位置 = string
変更対象のこのドキュメントの位置演算子を返します。
170 171 172 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は170行 デフォルト アトミック_位置 アトミック_パス.position end |
アトミック_pulls = 配列<Hash>
プルする必要があるすべての属性を取得します。
196 197 198 199 200 201 202 203 204 205 206 207 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は196行 デフォルト アトミック_プル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 =ハッシュ
発生する必要があるすべてのプッシュ属性を取得します。
215 216 217 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は215行 デフォルト アトミック_プッシュ プッシュ可能かどうか ? { アトミック_位置 => as_attributes } : {} end |
アトミック_セット ~ハッシュ
設定する必要があるすべての属性を取得します。
225 226 227 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は225行 デフォルト アトミック_セット 更新可能かどうか ? セッター : 設定可能 ? { アトミック_パス => as_attributes } : {} end |
アトミック_unsets 詳しくは、 Array[Hash ]<Hash>
設定解除する必要があるすべての属性を取得します。
235 236 237 238 239 240 241 242 243 244 245 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は235行 デフォルト アトミック_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
で実行する必要があるすべてのアトミック更新を取得します。 これには、保存呼び出しが行われた階層の下に存在する階層全体で実行する必要があるすべての変更が含まれます。
119 120 121 122 123 124 125 126 127 128 |
ファイル ' build/mongoid- 8.1 /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 からハッシュ
保留中のアトミック プルのハッシュを取得します。
263 264 265 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は263行 デフォルト Delay_アトミック_プルs @Delayed_アトミック_pulls ||= {} end |
# Delay_アトミック_セット =ハッシュ
保存が遅延したすべてのアトミック セットを取得します。
253 254 255 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は253行 デフォルト Delay_アトミック_セット @Delayed_アトミック_セット ||= {} end |
# Delay_atomic_unsets =ハッシュ
遅延アトミック アン セットを取得します。
273 274 275 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は273行 デフォルト Delay_アトミック_unsets @Delayed_atomic_unsets ||= {} end |
phrasestring
ドキュメントが破棄されたことをフラグし、アトミック パスを返します。
283 284 285 286 287 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は283行 デフォルト phrase 自己.破棄された = true 自己.phrase = false アトミック_パス end |
#flagged_destroys ⇒ Array<Proc>
フラグ付きの破棄を取得します。
295 296 297 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は295行 デフォルト phrase @fluged_deletstrys ||= [] end |
#process_fluged_delets カードの配列
ネストされた属性からの保留中のすべてのフラグ付き破棄を処理します。
305 306 307 308 309 310 |
ファイル ' build/mongoid- 8.1 /lib/mongoid/atlas.rb ' の場合は305行 デフォルト process_fluged_delets _assigning 行う phrase.各(&: 呼び出し) end phrase.クリア end |