クラス: Mongoid::criteria
- 継承:
-
オブジェクト
- オブジェクト
- Mongoid::Criteria
- 次のことが含まれます。
- 列挙 可能、 監視 可能 、 Mongoid ::Clients::Options 、 Mongoid ::Clients::Sessions 、 Contextual 、 検索 可能
- 定義:
- lib/mongoid/criteria.rb 、
lib/mongoid/criteria/options.rb、
lib/mongoid/criteria/findable.rb、
lib/mongoid/criteria/scopable.rb、
lib/mongoid/criteria/queryable.rb、
lib/mongoid/criteria/includeable.rb、
lib/mongoid/criteria/modified.rb、
lib/mongoid/criteria/permission.rb、
lib/mongoid/criteria/translator.rb、
lib/mongoid/criteria/mergerable.rb、
lib/mongoid/criteria/queryable/key.rb、
lib/mongoid/criteria/queryable/smash.rb、
lib/mongoid/criteria/queryable/options.rb、
lib/mongoid/criteria/queryable/optional.rb、
lib/mongoid/criteria/queryable/ pipeline.rb、
lib/mongoid/criteria/queryable/selector.rb、
lib/mongoid/criteria/queryable/storable.rb、
lib/mongoid/criteria/queryable/macroable.rb、
lib/mongoid/criteria/queryable/mergeable.rb、
lib/mongoid/criteria/queryable/aggregable.rb、
lib/mongoid/criteria/queryable/expandable.rb、
lib/mongoid/criteria/queryable/selectable.rb、
lib/mongoid/criteria/queryable/extentions/set.rb、
lib/mongoid/criteria/queryable/extentions/date.rb,
lib/mongoid/criteria/queryable/extentions/hash.rb、
lib/mongoid/criteria/queryable/extentions/time.rb、
lib/mongoid/criteria/queryable/extentions/array.rb、
lib/mongoid/criteria/queryable/extentions/range.rb、
lib/mongoid/criteria/queryable/extentions/object.rb、
lib/mongoid/criteria/queryable/extentions/regexp.rb、
lib/mongoid/criteria/queryable/extentions/string.rb、
lib/mongoid/criteria/queryable/extentions/symbol.rb、
lib/mongoid/criteria/queryable/extentions/boolan.rb、
lib/mongoid/criteria/queryable/extentions/numeric.rb、
lib/mongoid/criteria/queryable/extentions/date_time.rb、
lib/mongoid/criteria/queryable/extentions/nil_Class.rb、
lib/mongoid/criteria/queryable/extentions/big_decimal.rb、
lib/mongoid/criteria/queryable/extentions/time_with_zone.rb
Overview
Criteria
クラスは、Mongoid がデータベースからオブジェクトを検索するために必要なコア オブジェクトです。 これは、Ruby ドライバーの Mongo::Collection に渡されるセレクターとオプションの引数を基本的に設定する DSL です。 Criteria
の各メソッドは、データベースに対して実行する読み取り可能な基準を作成するために連鎖させることができる自分自身を返します。
名前空間で定義済み
Modules: 検索 可能 、 包含 可能 、 マーシャリング 可能 、 変更可能 、 オプション 、 権限 、 クエリ 可能 、 スコープ 可能 、 トランスレーター
定数の概要の削減
- CHECK =
メソッドが欠落しているかを確認するために使用される静的配列。インスタンス化する必要があるのは一度だけです。
[]
インスタンス属性の概要を折りたたむ
-
#の関連付け= オブジェクト
属性の関連付けの値を返します。
-
埋め込み= オブジェクト
埋め込まれた属性の値を返します。
-
#klass ⇒ Object
属性 klas の値を返します。
-
#parent_document =オブジェクト
属性の親_ドキュメントの値を返します。
変更可能なに含まれる属性
#create_attrs 、 #create_attrs 作成時にドキュメントに追加する追加の属性。
クエリ可能な に含まれる属性
エイリアス、 #エイリアス 。 、 #serializer 、 #serializer シリアライザー。
Queryable::任意に含まれる属性
#options 、 #options クエリ オプション。
Queryable::Aggregableに含まれる属性
集計、集計 フラグ。集計するかどうかを指定します。 、 集計パイプライン 、パイプライン 集計パイプライン。
Queryable::mergeableに含まれる属性
クラスメソッドの概要を折りたたむ
-
。 from_hash (ハッシュ)=====================================================
指定されたハッシュを基準に変換します。
インスタンス メソッドの概要を折りたたむ
-
# == (その他) ==(その他) ========= ================================================================== false
指定された
Enumerable
またはCriteria
がこのCriteria
の結果または条件自体と等しい場合は true を返します。 - #_enumerable_find ⇒ Object private
- # _findable_find =オブジェクト private
-
#as_json(options = nil) ⇒ String
基準をJSONとして適切に取得するために必要です。
-
ドキュメント数: 配列[Document]<Document>
埋め込み条件からドキュメントを取得します。
-
#documents=(docs) ⇒ Array<Document>
基準に埋め込みドキュメントを設定します。
-
#埋め込み= true | false
埋め込みドキュメントの基準は かどうか。
-
# empty_and_linkable? = true | false
基準は空でも連鎖可能な基準ではありますか。
-
#tract_id =オブジェクト
指定された条件から 1 つの ID を抽出します。
-
#extras(extras) ⇒ Criteria
Ruby ドライバーに渡す追加オプションを、ドライバーの正確な形式で指定する基準を
Criteria
に追加します。 -
# field_list =<String> 配列=string=string========================
含まれるフィールドの一覧を取得します。
-
find (*args){{|Object| ... } = ドキュメント |<Document> Array[Document]| nil
指定された _id 値を指定して 1 つまたは複数のドキュメントを検索するか、必要に応じてアプリケーション プロセス空間で現在のスコープ内のドキュメントをフィルタリングします。
- for_js ( JavaScript 、scope = {}) = 条件 非推奨 非推奨。
-
#freeze ⇒ Criteria
基準を解放する場合は、最初にコンテキストを初期化する必要があります。そうでない場合、反復試行時にコンテキストの設定によりランタイムエラーが発生します。
-
#initialize(klass) ⇒ Criteria
コンストラクター
新しい基準を初期化します。
-
# merge (その他)= 基準
この
Criteria
で別のオブジェクトをマージし、新しい条件を返します。 -
# merge。 (その他) → 基準
他の基準をこの基準にマージします。
-
#none ⇒ Criteria
常にゼロ結果を含み、データベースにヒットしない条件を返します。
-
#のみ(*args)= Criteria
フィールドに _type を含めるようにオーバーライドします。
-
# read (value = nil) = nil = nil) = 基準
基準の読み込み設定 (read preference) を設定します。
-
response_to? (name, include_private = false) = true | false
条件が指定されたメソッドに応答する場合は true を返します。
- #to_criteria ⇒ Criteria 非推奨 非推奨。
-
#to_proc ⇒ Proc
基準をプロシージャに変換します。
-
型(types) ~ 型(criteria)
一致する必要があるタイプまたはタイプの配列を指定する基準を
Criteria
に追加します。 -
( *args) = 条件
これは、ほとんどの MongoDB クエリの一般的なエントリ ポイントです。
-
(*args)なしの# = 条件 = 基準
フィールドから _id を除外するにはオーバーライドします。
-
_options を使用しないでオプションを使用する。
オプションを指定せずに、この条件のバージョンを取得します。
Mongoid::Clients::Sessionsに含まれるメソッド
Mongoid ::Clients::Optionsに含まれるメソッド
#collection 、 #collection_name 、 #mongo_client 、#永続性_context 、#永続性_context? 、と
Scopesに含まれるメソッド
#apply_default_scope 、 #apply_scope 、 #remove_scoping 、# scoped 、#スコープ付き、スコープ設定_オプション 、スコープ設定_オプション= 、スコープなし、スコープなし、 #with_default_scope
変更可能なに含まれるメソッド
ビルド、作成、作成 。 、 #create_with 、 #find_or_create_by 、 #find_or_create_by. 、 #find_or_initialize_by 、 #first_or_create 、 #first_or_create 、 #first_or_initiate
マーシャリング可能なに含まれるメソッド
Includeableから含まれるメソッド
Findableに含まれるメソッド
#execute_or_ Ops 、 #for_ids 、 #multiple_from_db
Queryable:: 任意に含まれるメソッド
昇順 、 バッチ _ サイズ 、 照合 、 、 、 、 、 および
Queryable::Macroableに含まれるメソッド
選択可能なに含まれるメソッド
Queryable::Aggregableに含まれるメソッド
必要な集計 、 #group 、#project 、 # unwind
Queryable::mergeableに含まれるメソッド
#and_with_operator 、 #交差、 #上書き、 #reset_strategis 。 、 #union
Queryable::Storableに含まれるメソッド
#add_field_ Expression 、 #add_ logical_operator_ Expression 、 #add_one_ Expression 、 #add_operator_ Expression
Contextualに含まれるメソッド
コンストラクターの詳細
#initialize(klass) ⇒ Criteria
新しい基準を初期化します。
233 234 235 236 237 238 |
# ファイル 'lib/mongoid/criteria.rb', 行233 デフォルト 初期化(klass) @klass = klass @ embedded = nil @none = nil klass ? スーパー(klass.analyzed_fields, klass.フィールド, klass.関係, klass.alased_ associateds) : スーパー({}, {}, {}, {}) end |
動的メソッド処理
このクラスはメソッド_欠落メソッドを通じて動的メソッドを処理します
#メソッド_欠落 =オブジェクト(プライベート)
基準は のクラス メソッドである、 Document
Criteria
のスコープを連結するために使用されます。
530 531 532 533 534 535 536 537 538 539 540 |
# ファイル 'lib/mongoid/criteria.rb', 行530 ruby2_keywords デフォルト メソッド_欠落(name, *args, &ブロック) 場合 klass.respond_to?(name) klass.送信(:with_scope, 自己) 行う klass.送信(name, *args, &ブロック) end elsif チェック.respond_to?(name) return エントリ.送信(name, *args, &ブロック) else スーパー end end |
インスタンス属性の詳細
#の関連付け=オブジェクト
属性の関連付けの値を返します。
68 69 70 |
# ファイル 'lib/mongoid/criteria.rb', 行68 デフォルト 関連付け @関連付け end |
埋め込み=オブジェクト
埋め込まれた属性の値を返します。
68 69 70 |
# ファイル 'lib/mongoid/criteria.rb', 行68 デフォルト @ embedded end |
#klass ⇒ Object
属性 klas の値を返します。
68 69 70 |
# ファイル 'lib/mongoid/criteria.rb', 行68 デフォルト klass @klass end |
#parent_document =オブジェクト
属性の親_ドキュメントの値を返します。
68 69 70 |
# ファイル 'lib/mongoid/criteria.rb', 行68 デフォルト 親_ドキュメント @parent_document end |
クラスメソッドの詳細
。 from_hash (ハッシュ) =====================================================
指定されたハッシュを基準に変換します。 ハッシュ内の各キーを反復処理します。このキーは、基準オブジェクトの メソッドに対応する必要があります。 ハッシュには klas キーも含める必要があります。
55 56 57 58 59 60 61 |
# ファイル 'lib/mongoid/criteria.rb', 行55 デフォルト from_hash(ハッシュ) 条件 = 条件.新着情報(ハッシュ.削除(:klass) || ハッシュ.削除('klass')) ハッシュ.each_pair 行う |メソッド, args| 条件 = 条件.__send__(メソッド, args) end 条件 end |
インスタンス メソッドの詳細
# == (その他) ==(その他) ========= ================================================================== false
これにより、列挙可能な値が渡される場合、呼び出されたときにデータベースの負荷が強制されます。
指定されたEnumerable
またはCriteria
がこのCriteria
の結果または条件自体と等しい場合は true を返します。
78 79 80 81 |
# ファイル 'lib/mongoid/criteria.rb', 行78 デフォルト ==(その他) return スーパー 場合 その他.respond_to?(: セレクター) エントリ == その他 end |
#_enumerable_find ⇒ Object
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
26 |
# ファイル 'lib/mongoid/criteria.rb', 行26 エイリアス :_enumrable_find :find |
# _findable_find =オブジェクト
このメソッドは、プライベート API の一部です。 このメソッドは将来削除または変更される可能性があるため、可能な限り使用しないでください。
33 |
# ファイル 'lib/mongoid/criteria.rb', 行33 エイリアス :_findable_find :find |
#as_json(options = nil) ⇒ String
基準をJSONとして正しく返すために必要
140 141 142 |
# ファイル 'lib/mongoid/criteria.rb', 行140 デフォルト as_json( = nil) エントリ.as_json() end |
#documents ⇒ Array<Document>
埋め込み条件からドキュメントを取得します。
150 151 152 |
# ファイル 'lib/mongoid/criteria.rb', 行150 デフォルト ドキュメント @documents ||= [] end |
#documents=(docs) ⇒ Array<Document>
基準に埋め込みドキュメントを設定します。
161 162 163 |
# ファイル 'lib/mongoid/criteria.rb', 行161 デフォルト document==(docs) @documents = docs end |
#埋め込み = true | false
埋め込みドキュメントの基準は か?
171 172 173 |
# ファイル 'lib/mongoid/criteria.rb', 行171 デフォルト !!@ embedded end |
# empty_and_linkable? = true | false
基準は空であるが連鎖可能な基準か。
301 302 303 |
# ファイル 'lib/mongoid/criteria.rb', 行301 デフォルト empty_and_tainable? !!@none end |
#tract_id =オブジェクト
指定された条件から 1 つの ID を抽出します。 $and クエリまたは単一の _id クエリにある可能性があります。
182 183 184 |
# ファイル 'lib/mongoid/criteria.rb', 行182 デフォルト extra_id セレクター['_id'] || セレクター[:_id] || セレクター['id'] || セレクター[:id] end |
#extras(extras) ⇒ Criteria
Ruby ドライバーに渡す追加オプションを、ドライバーの正確な形式で指定する基準をCriteria
に追加します。
criteria.Extras(:limit => 20 、 :skip => 40 )
195 196 197 198 199 |
# ファイル 'lib/mongoid/criteria.rb', 行195 デフォルト extras(extras) crit = 複製 crit..mergeします。(extras) crit end |
# field_list = 配列 =string=string========================<String>
含まれるフィールドの一覧を取得します。
207 208 209 210 211 212 213 |
# ファイル 'lib/mongoid/criteria.rb', 行207 デフォルト field_list 場合 [:fields] [:fields].キー.拒否{ |キー| キー == klass.弁別子_キー } else [] end end |
#find(*args) {|Object| ... } ⇒ Document | Array<Document> | nil
各引数は、個々の ID、ID の配列、またはネストされた配列にすることができます。 各配列はフラット化されます。
指定された _id 値を指定して 1 つまたは複数のドキュメントを検索するか、必要に応じてアプリケーション プロセス空間で現在のスコープ内のドキュメントをフィルタリングします。
このメソッドでブロックが指定されていない場合、このメソッドはFindable#findに委任し、指定された _id 値の 1 つまたは複数のドキュメントを検索します。
このメソッドにブロックが与えられている場合、それはEnumerable#findに委任し、ブロックが真実の値を返す現在の Criteria オブジェクトによって見つかったドキュメントのうちの最初のドキュメントを返します。
列挙可能の「デフォルトのプロシージャ」引数は Mongoid では特別に処理されていないことに注意してくださいFindable
またはEnumerable
に委任するかどうかの決定は、 find
にブロックが渡されているかどうかのみに基づいて行われます。
124 125 126 127 128 129 130 |
# ファイル 'lib/mongoid/criteria.rb', 行124 デフォルト find(*args, &ブロック) 場合 ブロック_指定 _enumerable_find(*args, &ブロック) else _findable_find(*args) end end |
for_js ( JavaScript 、scope = {}) =条件
提供されたJavaScriptとスコープでドキュメントを検索します。 $where を使用しますが、生の string ではなくコード オブジェクトがクエリに渡されるという点でCriteria#whereとは異なります。 JavaScriptインジェクション攻撃に対して安全です。
466 467 468 469 470 471 472 473 474 |
# ファイル 'lib/mongoid/criteria.rb', 行466 デフォルト for_js(JavaScript, scope = {}) コード = 場合 scope.空の場合 MongoDB 4.4以降、CodeWithScopes は $where ではサポートされていません BSON::コード.新着情報(JavaScript) else BSON::CodeWithScopes.新着情報(JavaScript, scope) end js_query(コード) end |
#freeze ⇒ Criteria
基準を解放する場合は、最初にコンテキストを初期化する必要があります。そうでない場合、反復試行時にコンテキストの設定によりランタイムエラーが発生します。
223 224 225 |
# ファイル 'lib/mongoid/criteria.rb', 行223 デフォルト freeze context および includes および スーパー end |
# merge (その他)=基準
このCriteria
で別のオブジェクトをマージし、新しい条件を返します。 他のオブジェクトはCriteria
またはHash
です。 これは複数のスコープをまとめて使用するために使用され、連鎖したスコープ状況が必要になる場合があります。
260 261 262 263 264 |
# ファイル 'lib/mongoid/criteria.rb', 行260 デフォルト merge(その他) crit = 複製 crit.mergeします。(その他) crit end |
# merge。 (その他) →基準
他の基準をこの基準にマージします。
274 275 276 277 278 279 280 281 282 |
# ファイル 'lib/mongoid/criteria.rb', 行274 デフォルト mergeします。(その他) その他 = 自己.クラス.from_hash(その他) 場合 その他.is_a?(ハッシュ) セレクター.mergeします。(その他.セレクター) .mergeします。(その他.) 自己.ドキュメント = その他.ドキュメント.dup ただし、 その他.ドキュメント.空の場合 自己. = その他. 自己.includes = (includes + その他.includes).一意 自己 end |
#none ⇒ Criteria
常にゼロ結果を含み、データベースにヒットしない条件を返します。
291 292 293 |
# ファイル 'lib/mongoid/criteria.rb', 行291 デフォルト なし @none = true および 自己 end |
#のみ(*args)= Criteria
フィールドに _type を含めるようにオーバーライドします。
313 314 315 316 317 318 319 320 321 322 323 |
# ファイル 'lib/mongoid/criteria.rb', 行313 デフォルト 制限する(*args) args = args.平面 return 複製 場合 args.空の場合 場合 (args & フィールド::IDS).空の場合 args.unshift(:_id) end 場合 klass.継承 args.プッシュ(klass.弁別子_キー.to_sym) end スーパー(*args) end |
# read (value = nil) = nil = nil) =基準
基準の読み込み設定 (read preference) を設定します。
333 334 335 336 337 |
# ファイル 'lib/mongoid/criteria.rb', 行333 デフォルト 読み取り(価値 = nil) 複製.タップ 行う |条件| 条件..mergeします。(read: 価値) end end |
response_to? (name, include_private = false) = true | false
条件が指定されたメソッドに応答する場合は true を返します。
361 362 363 |
# ファイル 'lib/mongoid/criteria.rb', 行361 デフォルト respond_to?(name, include_private = false) スーパー || klass.respond_to?(name) || チェック.respond_to?(name, include_private) end |
#to_criteria ⇒ Criteria
基準にマージしたいオブジェクトの便宜上。
374 375 376 |
# ファイル 'lib/mongoid/criteria.rb', 行374 デフォルト to_criteria 自己 end |
#to_proc ⇒ Proc
基準をプロシージャに変換します。
385 386 387 |
# ファイル 'lib/mongoid/criteria.rb', 行385 デフォルト to_proc ->{ 自己 } end |
型(types) ~ 型( criteria )
一致する必要があるタイプまたはタイプの配列を指定する基準をCriteria
に追加します。
399 400 401 |
# ファイル 'lib/mongoid/criteria.rb', 行399 デフォルト タイプ(タイプ) any_in(自己.弁別子_キー.to_sym => 配列(タイプ)) end |
( *args) = 条件
これは、ほとんどの MongoDB クエリの一般的なエントリ ポイントです。 これにより、標準フィールドである値の選択と、ハッシュメソッドを使用して拡張された選択が作成されるか、string が指定されている場合は $where 選択が作成されます。
420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 |
# ファイル 'lib/mongoid/criteria.rb', 行420 デフォルト WHERE(*args) # 過去にこのメソッドには 1 つの引数が必要でした。 https://JIRA.mongodb.org/browse/MONGOID-{0 4804時点 も受け入れます # zero arguments. # スーパー呼び出しを行う実装がサポートする基礎の 任意の数の引数を使用できますが、現在は複数の引数は許可されていません このメソッドによる 引数。 この API は、次で再検討できます # 将来 場合 args.Length > 1 発生 ArgumentError, " Criteria#where は 0 または 1 つの引数を必要とします( # { args . strength } ) 。 end 場合 args.Length == 1 式 = args.最初に 場合 式.is_a?(::文字列) & & 発生 Errors::UnsupportedJavascript.新着情報(klass, 式) end end スーパー end |
(*args)なしの# = 条件 =基準
フィールドから _id を除外するにはオーバーライドします。
347 348 349 350 |
# ファイル 'lib/mongoid/criteria.rb', 行347 デフォルト 次のない:(*args) args -= id_fields スーパー(*args) end |
_options を使用しないでオプションを使用する。
オプションを指定せずに、この条件のバージョンを取得します。
446 447 448 449 450 |
# ファイル 'lib/mongoid/criteria.rb', 行446 デフォルト crit = 複製 crit..クリア crit end |