モジュール: Mongoid::positional

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

Overview

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

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

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

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

注:

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

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

例:

操作を処理します。

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

パラメーター:

  • セレクター ハッシュ

    セレクター。

  • 操作 ハッシュ

    更新操作。

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

    処理された更新操作。

次の値を返します。

  • ハッシュ

    新しい 操作。



34
35
36
37
38
39
40
41
# ファイル 'lib/mongoid/positional.rb' 行34

デフォルト 位置的に(セレクター, 操作, 処理済み = {})
  場合 セレクター.サイズ == 1 || セレクター.values.any? { |価値| 価値.nil? }
    return 操作
  end
  キー = セレクター.キー.map{ |m| m.サブ('._id','') } - ['_id']
  キー = キー.sort_by { |s| s.Length*-1 }
  process_operations(キー, 操作, 処理済み)
end