モジュール: Mongoid::Findable

次による拡張機能。
転送可能
定義:
lib/mongoid/findable.rb

Overview

このモジュールは、クラス レベルでドキュメントをハングする検索メソッドを定義します。

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

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

#= true | false

カウントがゼロの場合は true を返します

例:

このモデルに保存されたドキュメントはありませんか。

Person.empty?

次の値を返します。

  • true | false

    コレクションが空の場合。



95
96
97
# ファイル 'lib/mongoid/findable.rb', 行95

デフォルト 空の場合
  count == 0
end

#estimate_count = 整数

データベース内のレコードの推定数を返します。

例:

一致するドキュメントの数を取得します。

Person.estimated_count

次の値を返します。

  • (整数)

    一致するドキュメントの数。



85
86
87
# ファイル 'lib/mongoid/findable.rb', 行85

デフォルト Estimated_count
  with_default_scope.Estimated_count
end

が存在する場合(id_or_条件 = :none) = true | false

指定された引数に基づいて、データベースにドキュメントがある場合は true を返します。

例:

条件に一致するドキュメントは存在しますか。

Person.exists?

指定された _id のドキュメントが存在するかどうか。

Person.exists?(BSON::ObjectId(...))

指定された条件のためにドキュメントが存在するかどうかを確認します。

Person.exists?(name: "...")

パラメーター:

  • id_or_条件 ハッシュ | オブジェクト | false (デフォルトは:none

    検索対象の _id、条件のハッシュ、 nil または false 。

次の値を返します。

  • true | false

    条件を満たすドキュメントが存在する場合。 nil または false が渡された場合は常に false 。



116
117
118
# ファイル 'lib/mongoid/findable.rb', 行116

デフォルト 存在するかどうか(id_or_条件 = :none)
  with_default_scope.存在するかどうか(id_or_条件)
end

#find(*args, &block) ⇒ Document | Array<Document> | nil

注:

各引数は、個々の ID、ID の配列、またはネストされた配列にすることができます。 各配列はフラット化されます。

_id 値でDocumentまたは複数のドキュメントを検索します。

単一の配列以外の引数が指定されている場合、この引数は検索対象のドキュメントの _id 値として解釈されます。 データベース内に一致するドキュメントがある場合は、このドキュメントが返されます。もしくは、 raise_not_found_error Mongoid 構成オプションが真実(デフォルト)の場合はErrors::DocumentNotFoundが発生し、 raise_not_found_errorが false の場合、 findnilを返します。

複数の引数が指定されている場合、または配列引数が指定されている場合、配列はフラット化され、各配列要素は検索対象のドキュメントの _id 値として解釈されます。 次に、Mongoid は指定された _id 値を持つすべてのドキュメントの検索を試みます。 戻り値は、見つかったドキュメントの配列です。 各ドキュメントは返される配列に 1 回表示されます。ただし、その _id がfindへの引数で複数回指定されている場合でも、 raise_not_found_error Mongoid 構成オプションが真実の場合、指定された _id のいずれかがデータベース内で見つからなかった場合は、 Errors::DocumentNotFound例外が発生します。 raise_not_found_error Mongoid 構成オプションが false の場合、見つかったドキュメントのみが返されます。ドキュメントが見つからない場合、戻り値は空の配列になります。

MongoDB では、_id フィールドは配列になることはできないことに注意してください。

引数は、 _id フィールドに宣言された型に基づいて、カスタムの Mongoid 型変換を行います。 デフォルトでは、_id フィールドはBSON::ObjectIdです。これにより、クエリの構築時に string がfindに渡され、string はBSON::ObjectIdインスタンスに透過的に変換されます。

このメソッドにブロックが与えられている場合、それはEnumerable#findに委任し、ブロックが真実の値を返す現在の Criteria オブジェクトによって見つかったドキュメントのうちの最初のドキュメントを返します。 ブロックと ID の両方が指定されている場合、ブロックは無視され、指定された ID のドキュメントが返されます。 ブロックと Proc が指定された場合、メソッドはEnumerable#findに委任し、デフォルトとしてプロシージャを使用します。

findメソッドは、モデル クラスに定義されているデフォルトのスコープを考慮します(存在する場合)。

パラメーター:

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

    検索対象の ID。

次の値を返します。

  • (Document | Array<Document> | nil)

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

次の値が発生します。

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



169
170
171
172
173
174
175
176
# ファイル 'lib/mongoid/findable.rb', 行169

デフォルト find(*args, &ブロック)
  empty_or_proc = args.空の場合 || (args.Length == 1 & & args.最初に.is_a?(Proc))
  場合 ブロック_指定 & & empty_or_proc
    with_default_scope.find(*args, &ブロック)
  else
    with_default_scope.find(*args)
  end
end

# find_by (atlas = {}){{|result| ... } =ドキュメント| nil

条件に従って最初のDocumentを見つけます。 一致するドキュメントが見つからず、Mongoid. Ops Manager が true に設定されている場合には、Mongoid::Errors::DocumentNotFound が発生します。それ以外の場合は、null を返します。

および Mongoid. resume_not_find_error は true です。

例:

ID 以外の属性でドキュメントを検索

Person.find_by(:username => "superuser")

パラメーター:

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

    チェックする属性。

結果:

  • 結果

次の値を返します。

  • (Document | nil)

    一致するドキュメント。

次の値が発生します。



192
193
194
195
196
197
198
199
# ファイル 'lib/mongoid/findable.rb', 行192

デフォルト find_by(attrs = {})
  結果 = WHERE(attrs).find_first
  場合 結果.nil? & & Mongoid.resume_not_find_error
    発生(Errors::DocumentNotFound.新着情報(自己, attrs))
  end
  ノードの数(結果) 場合 結果 & & ブロック_指定
  結果
end

# find_by (atlas = {}){{|result| ... } =ドキュメント

条件付きで最初のDocumentを見つけます。または Mongoid::Errors::DocumentNotFound が発生します

例:

ID 以外の属性でドキュメントを検索

Person.find_by(:username => "superuser")

パラメーター:

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

    チェックする属性。

結果:

  • 結果

次の値を返します。

次の値が発生します。



212
213
214
215
216
217
# ファイル 'lib/mongoid/findable.rb', 行212

デフォルト find_by.(attrs = {})
  結果 = WHERE(attrs).find_first
  発生(Errors::DocumentNotFound.新着情報(自己, attrs)) ただし、 結果
  ノードの数(結果) 場合 結果 & & ブロック_指定
  結果
end

最初に#を指定する (limit = nil) =ドキュメントまたは1 つの

条件に従って最初のDocumentを見つけます。

例:

最初のドキュメントを見つけます。

Person.first

パラメーター:

  • limit 整数 (デフォルトはnil

    返されるドキュメントの数。

次の値を返します。



227
228
229
# ファイル 'lib/mongoid/findable.rb', 行227

デフォルト 最初に(limit = nil)
  with_default_scope.最初に(limit)
end

#last(limit = nil) ⇒ Document

条件付きで最後のDocumentを見つけます。

例:

最後のドキュメントを見つけます。

Person.last

パラメーター:

  • limit 整数 (デフォルトはnil

    返されるドキュメントの数。

次の値を返します。



240
241
242
# ファイル 'lib/mongoid/findable.rb', 行240

デフォルト last(limit = nil)
  with_default_scope.last(limit)
end