モジュール: Mongoid::positional

次のドキュメントに含まれます。
関連付け::埋め込み::バッチ可能コンテキスト::メモリ永続
定義:
lib/mongoid/positional.rb

Overview

このモジュールは、更新セレクターを取得し、必要に応じて $ 位置演算子のインデックスを切り替えます。

インスタンス メソッドの概要を折りたたむ

インスタンス メソッドの詳細

位置的に#がある(セレクター、操作、処理された={{}) =ハッシュ

注:

位置演算子をいつ使用するべきかを正確に把握できるのは、データを永続化するときだけです。したがって、位置演算子を実際に使用できるかどうかは、送信している セレクター によって判断できます。例、セレクターが { "_id" => 1 } の場合、一致するものが ない ため、埋め込みドキュメントを更新するための位置演算子 は使用できませんでした。 がのあるレベルの場合には、セレクターは深度があり、ID 値が nil 以外の場合は になります。

指定された セレクター と アトミック 操作を受け取り、必要に応じて埋め込みドキュメントのインデックスを位置演算子に置き換えます。

例:

操作を処理します。

positionally(
  { "_id" => 1, "addresses._id" => 2 },
  { "$set" => { "addresses.0.street" => "hobrecht" }}
)

パラメーター:

  • セレクター ハッシュ

    セレクター。

  • 操作 ハッシュ

    更新操作。

  • 処理済み ハッシュ (デフォルトは{}です)

    処理された更新操作。

次の値を返します。

  • ハッシュ

    新しい 操作。



31
32
33
34
35
36
37
# ファイル 'lib/mongoid/positional.rb' 行31

デフォルト 位置的に(セレクター, 操作, 処理済み = {})
  return 操作 場合 セレクター.サイズ == 1 || セレクター.values.any? { |価値| 価値.nil? }

  キー = セレクター.キー.map { |m| m.サブ('._id', '') } - [ '_id' ]
  キー = キー.sort_by { |s| s.Length * -1 }
  process_operations(キー, 操作, 処理済み)
end