クラス: Mongoid::Attributes::Projector Private

継承:
オブジェクト
  • オブジェクト
すべて表示
定義:
lib/mongoid/attributes/projector.rb

Overview

このクラスは、プライベート API の一部です。 このクラスは将来削除または変更される可能性があるため、可能な限り使用しないでください。

このモジュールは プロジェクション ヘルパーを定義します。

プロジェクション ルールはどちらかというと簡単ではありません。https://www.mongodb.com/ja-jp/docs/manual/ 参照/method/db を参照してください。 コレクション.find/#find-projectionサーバードキュメント用。4.4サーバー(およびほぼすべての古いサーバー)では、コンテンツ フィールドのプロジェクションが除外的または包含的のいずれかである必要があります。つまり、同じクエリで除外と包含を混在させることはできません。ただし、コンテンツフィールドを含むプロジェクションでは、_id を除外できます。この書き込みの時点で、0 と 1 以外の整数プロジェクション値は公式にドキュメント化されていません。 DOSP-15266 を参照してください。4.4サーバーでは、ドット表記に加えてネストされたハッシュプロジェクションの指定も許可されています。これは Mongoid がまだ処理しないと仮定します。

インスタンス属性の概要を折りたたむ

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

コンストラクターの詳細

#Initialize (プロジェクション)=プロジェクション

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

プロジェクションの新しいインスタンスを返します。



22
23
24
25
26
27
28
29
30
31
# ファイル 'lib/mongoid/attributes/projector.rb' は、 22行を

デフォルト 初期化(プロジェクション)
  場合 プロジェクション
    @content_projection = プロジェクション.dup
    @content_projection.削除('_id')
    @id_projection_value = プロジェクション['_id']
  else
    @content_projection = nil
    @id_projection_value = nil
  end
end

インスタンス属性の詳細

#content_projection =オブジェクト(読み取り専用)

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。



33
34
35
# ファイル 'lib/mongoid/attributes/projector.rb' は、 33行を

デフォルト content_projection
  @content_projection
end

# id_projection_value =オブジェクト(読み取り専用)

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。



33
34
35
# ファイル 'lib/mongoid/attributes/projector.rb' は、 33行を

デフォルト id_projection_value
  @id_projection_value
end

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

属性_or_path_allowed? (name) = true | false

このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。

指定された属性またはドット表記パスが構成されたプロジェクションで許可されているかどうか(許可されている場合)を判断します。

構成されたプロジェクションがない場合、 は true を返します。

パラメーター:

  • name ( string ) —

    属性またはドット表記パスの名前。

次の値を返します。

  • ( true | false ) —

    属性がプロジェクションで許可されているかどうか。



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# ファイル 'lib/mongoid/attributes/projector.rb' は、 45行を

デフォルト 属性_or_path_allowed?(name)
  # _id の特別な処理。
  場合 name == '_id'
    結果 = id_projection_value.nil? || value_includer(id_projection_value)
    return 結果
  end

  場合 content_projection.nil?
    # プロジェクションはありません(空のプロジェクションではない)。
    # すべての属性が許可されます。
    return true
  end

  # 要求された名前やパスと一致する、または要求された名前やパスの親であるアイテムを検索します。
  # これは、たとえば、プロジェクションが次の場合に対応します:
  {foo: true} と、foo.bar が許可されているかどうかを確認したい。
  item, 価値 = content_projection.検出 行う |path, _value|
    (name + '.').start_with?(path + '.')
  end
  return value_includer(価値) 場合 item

  場合 content_includer
    # 要求された名前やパスの厳密な子であるアイテムを検索します。
    # これは、たとえば、プロジェクションが次の場合に対応します:
    # {"foo.bar" => true} と、foo が許可されているかどうかを確認したい。
    #(バーのコンテナです)
    item, = content_projection.検出 行う |path, _value|
      (path + '.').start_with?(name + '.')
    end
    return true 場合 item
  end

  !content_includer
end