クラス: 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 =

メソッドが欠落しているかを確認するために使用される静的配列。インスタンス化する必要があるのは一度だけです。

[]

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

変更可能なに含まれる属性

#create_attrs#create_attrs 作成時にドキュメントに追加する追加の属性。

クエリ可能な に含まれる属性

エイリアス#エイリアス 。#serializer#serializer シリアライザー。

Queryable::任意に含まれる属性

#options#options クエリ オプション。

Queryable::Aggregableに含まれる属性

集計集計 フラグ。集計するかどうかを指定します。集計パイプライン 、パイプライン 集計パイプライン。

Queryable::mergeableに含まれる属性

#戦略#戦略 現在の戦略の名前。

クラスメソッドの概要を折りたたむ

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

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

マーシャリング可能なに含まれるメソッド

#merger_dump#merger_load

Includeableから含まれるメソッド

を含む: 、 を含む、 を含む

Findableに含まれるメソッド

#execute_or_ Ops#for_ids#multiple_from_db

Queryable:: 任意に含まれるメソッド

昇順 バッチ _ サイズ 照合 、 、 、 、 、 および

Queryable::Macroableに含まれるメソッド

#key

選択可能なに含まれるメソッド

#アトミック_Selector

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に含まれるメソッド

#context, #load_async

コンストラクターの詳細

#initialize(klass) ⇒ Criteria

新しい基準を初期化します。

例:

新しい条件を開始します。

Criteria.new(Band)

パラメーター:

  • klass クラス

    モデル クラス。



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のスコープを連結するために使用されます。

例:

処理メソッドがありません。

criteria.method_missing(:name)

パラメーター:

  • name シンボル

    メソッド名。

  • *args オブジェクト...

    引数。

次の値を返します。

  • オブジェクト

    メソッド呼び出しの結果。



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

#klassObject

属性 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 キーも含める必要があります。

例:

ハッシュを基準に変換します。

Criteria.from_hash({ klass: Band, where: { name: "Depeche Mode" })

パラメーター:

  • ハッシュ ハッシュ

    変換するハッシュ。

次の値を返します。



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 を返します。

パラメーター:

  • その他 オブジェクト

    比較するもう 1 つのEnumerableまたはCriteria

次の値を返します。

  • true | false

    オブジェクトが等しい場合。



78
79
80
81
# ファイル 'lib/mongoid/criteria.rb', 行78

デフォルト ==(その他)
  return スーパー 場合 その他.respond_to?(: セレクター)
  エントリ == その他
end

#_enumerable_findObject

このメソッドは、プライベート 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として正しく返すために必要

例:

基準をJSONとして取得します。

Person.where(:title => "Sir").as_json

パラメーター:

  • options ハッシュ (デフォルトはnil

    シリアライザーに渡すオプション。

次の値を返します。

  • ( string )

    JSON string。



140
141
142
# ファイル 'lib/mongoid/criteria.rb', 行140

デフォルト as_json(options = nil)
  エントリ.as_json(options)
end

#documentsArray<Document>

埋め込み条件からドキュメントを取得します。

例:

ドキュメントを取得します。

criteria.documents

次の値を返します。



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

埋め込みドキュメントの基準は か?

例:

埋め込みドキュメントの基準は か?

criteria.embedded?

次の値を返します。

  • true | false

    条件が埋め込まれている場合。



171
172
173
# ファイル 'lib/mongoid/criteria.rb', 行171

デフォルト 埋め込み
  !!@ embedded
end

# empty_and_linkable? = true | false

基準は空であるが連鎖可能な基準か。

例:

基準はありませんか。

criteria.empty_and_chainable?

次の値を返します。

  • true | false

    条件が なし の場合。



301
302
303
# ファイル 'lib/mongoid/criteria.rb', 行301

デフォルト empty_and_tainable?
  !!@none
end

#tract_id =オブジェクト

指定された条件から 1 つの ID を抽出します。 $and クエリまたは単一の _id クエリにある可能性があります。

例:

ID を抽出します。

criteria.extract_id

次の値を返します。

  • オブジェクト

    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 )

例:

基準に余計なパラメータを追加します。

パラメーター:

  • extras ハッシュ

    追加のドライバー オプション。

次の値を返します。

  • 基準

    複製された基準。



195
196
197
198
199
# ファイル 'lib/mongoid/criteria.rb', 行195

デフォルト extras(extras)
  crit = 複製
  crit.options.mergeします。(extras)
  crit
end

# field_list = 配列 =string=string========================<String>

含まれるフィールドの一覧を取得します。

例:

フィールド リストを取得します。

criteria.field_list

次の値を返します。

  • <String>配列未満

    フィールド。



207
208
209
210
211
212
213
# ファイル 'lib/mongoid/criteria.rb', 行207

デフォルト field_list
  場合 options[:fields]
    options[: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にブロックが渡されているかどうかのみに基づいて行われます。

例:

_id でドキュメントを検索し、 Findable#find を呼び出します。

critera.find("1234")

ブロックを使用して最初に一致するドキュメントを検索し、 Ennumerable#find を呼び出します。

criteria.find { |item| item.name == "Depeche Mode" }

デフォルトの Proc を使用してブロックを使用して最初に一致するドキュメントを検索し、 Ennumerable#find を呼び出します。

criteria.find(-> { "Default Band" }) { |item| item.name == "Milwaukee Mode" }

_id が提供された Proc の文字列化であるドキュメントの検索は、通常失敗します。

enumerator = criteria.find(-> { "Default Band" })

パラメーター:

  • *args [ オブジェクト | 配列 <Object> ]...

    ID。

  • & ブロック

    渡す任意のブロック。

結果:

  • オブジェクト

    各列挙可能な要素をブロックに変換します。

次の値を返します。

  • (Document | Array<Document> | nil)

    1 つまたは複数のドキュメント。

次の値が発生します。

  • Errors::DocumentNotFound パラメータが _id 値で、すべてのドキュメントが見つからず、 raise_not_found_error Mongoid 構成オプションが true の場合。

以下も参照してください。



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インジェクション攻撃に対して安全です。

例:

JavaScriptで検索します。

Band.for_js("this.name = param", param: "Tool")

パラメーター:

  • JavaScript ( string )

    $where で実行するJavaScript 。

  • scope ハッシュ (デフォルトは{}です)

    コードの範囲。

次の値を返します。



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

#freezeCriteria

基準を解放する場合は、最初にコンテキストを初期化する必要があります。そうでない場合、反復試行時にコンテキストの設定によりランタイムエラーが発生します。

例:

基準を固定します。

criteria.freeze

次の値を返します。

  • 基準

    固定された基準。



223
224
225
# ファイル 'lib/mongoid/criteria.rb', 行223

デフォルト freeze
  context および includes および スーパー
end

# merge (その他)=基準

このCriteriaで別のオブジェクトをマージし、新しい条件を返します。 他のオブジェクトはCriteriaまたはHashです。 これは複数のスコープをまとめて使用するために使用され、連鎖したスコープ状況が必要になる場合があります。

例:

基準を別の基準とマージします。

criteria.merge(other_criteria)

ハッシュで条件をマージします。 ハッシュには klas が含まれている必要があります。

key and the key/value pairs correspond to method names/args.

criteria.merge({
  klass: Band,
  where: { name: "Depeche Mode" },
  order_by: { name: 1 }
})

パラメーター:

  • その他 基準

    マージするその他の基準。

次の値を返します。

  • 基準

    複製された自己。



260
261
262
263
264
# ファイル 'lib/mongoid/criteria.rb', 行260

デフォルト merge(その他)
  crit = 複製
  crit.mergeします。(その他)
  crit
end

# merge。 (その他) →基準

他の基準をこの基準にマージします。

例:

別の基準をこの基準にマージします。

criteria.merge(Person.where(name: "bob"))

パラメーター:

  • その他 条件| ハッシュ

    マージする基準。

次の値を返します。

  • 基準

    マージされた基準。



274
275
276
277
278
279
280
281
282
# ファイル 'lib/mongoid/criteria.rb', 行274

デフォルト mergeします。(その他)
  その他 = 自己.クラス.from_hash(その他) 場合 その他.is_a?(ハッシュ)
  セレクター.mergeします。(その他.セレクター)
  options.mergeします。(その他.options)
  自己.ドキュメント = その他.ドキュメント.dup ただし、 その他.ドキュメント.空の場合
  自己.scope_options = その他.scope_options
  自己.includes = (includes + その他.includes).一意
  自己
end

#noneCriteria

常にゼロ結果を含み、データベースにヒットしない条件を返します。

例:

条件以外の を返します。

criteria.none

次の値を返します。

  • 基準

    なし 基準。



291
292
293
# ファイル 'lib/mongoid/criteria.rb', 行291

デフォルト なし
  @none = true および 自己
end

#のみ(*args)= Criteria

フィールドに _type を含めるようにオーバーライドします。

例:

データベースから返されるフィールドを制限します。

Band.only(:name)

パラメーター:

  • *args [ Symbol | Array[]<Symbol> ]...

    フィールド名。

次の値を返します。

  • 基準

    複製された基準。



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) を設定します。

例:

読み込み設定 (read preference) を設定します。

criteria.read(mode: :primary_preferred)

パラメーター:

  • 価値 ハッシュ (デフォルトはnil

    モードの設定。

次の値を返します。

  • 基準

    複製された基準。



333
334
335
336
337
# ファイル 'lib/mongoid/criteria.rb', 行333

デフォルト 読み取り(価値 = nil)
  複製.タップ 行う |条件|
    条件.options.mergeします。(read: 価値)
  end
end

response_to? (name, include_private = false) = true | false

条件が指定されたメソッドに応答する場合は true を返します。

例:

基準は メソッドに応答しますか。

crtiteria.respond_to?(:each)

パラメーター:

  • name シンボル

    Documentのクラス メソッドの名前。

  • include_private true | false (デフォルトはfalse

    プライベートを含めるかどうか。

次の値を返します。

  • true | false

    条件が メソッドに応答する場合。



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_criteriaCriteria

非推奨。

基準にマージしたいオブジェクトの便宜上。

例:

基準に変換します。

criteria.to_criteria

次の値を返します。



374
375
376
# ファイル 'lib/mongoid/criteria.rb', 行374

デフォルト to_criteria
  自己
end

#to_procProc

基準をプロシージャに変換します。

例:

基準をプロシージャに変換します。

criteria.to_proc

次の値を返します。

  • Proc

    ラップされた基準。



385
386
387
# ファイル 'lib/mongoid/criteria.rb', 行385

デフォルト to_proc
  ->{ 自己 }
end

(types) ~ 型( criteria

一致する必要があるタイプまたはタイプの配列を指定する基準をCriteriaに追加します。

例:

特定のモデルのみと一致します。

criteria.type('Browser')
criteria.type(['Firefox', 'Browser'])

パラメーター:

  • タイプ <String>配列未満

    照合するタイプ。

次の値を返します。

  • 基準

    複製された基準。



399
400
401
# ファイル 'lib/mongoid/criteria.rb', 行399

デフォルト タイプ(タイプ)
  any_in(自己.弁別子_キー.to_sym => 配列(タイプ))
end

( *args) = 条件

これは、ほとんどの MongoDB クエリの一般的なエントリ ポイントです。 これにより、標準フィールドである値の選択と、ハッシュメソッドを使用して拡張された選択が作成されるか、string が指定されている場合は $where 選択が作成されます。

例:

標準選択 を追加します。

criteria.where(name: "syd")

JavaScriptの選択を追加します。

criteria.where("this.name == 'syd'")

パラメーター:

  • *args [ ハッシュ | string ]...

    標準選択またはJavaScript string 。

次の値を返します。

  • 基準

    選択可能な を複製しました。

次の値が発生します。

  • サポート対象外の Javascript

    string が指定され、条件が埋め込まれている場合。



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 を除外するにはオーバーライドします。

例:

データベースから返されたフィールドを除外します。

Band.without(:name)

パラメーター:

  • *args (Symbol...)

    フィールド名。

次の値を返します。

  • 基準

    複製された基準。



347
348
349
350
# ファイル 'lib/mongoid/criteria.rb', 行347

デフォルト 次のない:(*args)
  args -= id_fields
  スーパー(*args)
end

_options を使用しないオプションを使用する。

オプションを指定せずに、この条件のバージョンを取得します。

例:

オプションなしで基準を取得します。

criteria.without_options

次の値を返します。

  • 基準

    複製された基準。



446
447
448
449
450
# ファイル 'lib/mongoid/criteria.rb', 行446

デフォルト without_options
  crit = 複製
  crit.options.クリア
  crit
end