クラス: Mongoid::Contextual::Mongo

継承:
オブジェクト
  • オブジェクト
すべて表示
次による拡張機能。
転送可能
次のことが含まれます。
列挙可能、関連付け::EagerLoadableアトミック集計可能::Mongoクエリ可能
定義:
lib/mongoid/contextual/mongo.rb
lib/mongoid/contextual/mongo/documents_loader.rb

Overview

データベースに保持され、アプリケーション メモリにロードされていないドキュメントに対して、一括クエリと永続化操作を実行するために使用されるコンテキスト オブジェクト。

名前空間で定義済み

クラス: DocumentsLoader

定数の概要の削減

OPTIONS =

オプション 定数。

[ :hint,
  :limit,
  :skip,
  :sort,
  :batch_size,
  :max_scan,
  :max_time_ms,
  :snapshot,
  :comment,
  :read,
  : cursor_type,
  :collation
].freeze

アトミックに含まれる定数

Atomic::UPDATES

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

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

コレクションコレクション クエリ対象のコレクションです。#criteria#criteria コンテキストの基準。#klas#klass 基準の klas。

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

クエリ可能な に含まれるメソッド

#blank?

関連::EagerLoadableに含まれるメソッド

#EAger_load# Dataer_loadable か。#preload

アトミックに含まれるメソッド

#add_atomic_pull , #add_atomic_unset , #atomic_array_add_to_sets , #atomic_array_pulls , #atomic_array_pushes , #atomic_attribute_name , #atomic_delete_modifier , #atomic_insert_modifier , #atomic_path , #atomic_paths , #atomic_position , #atomic_pulls , #atomic_pushes , #atomic_sets , #atomic_unsets , #atomic_updates , #delayed_atomic_pulls 、遅延_アトミック_セット 、遅延_アトミック_unsets 、#フラグ_as_destricted#フラグメント_デプロイs# process_flugger_delete s

Aggregate::Mongoに含まれるメソッド

、 、 、 、 、 、 、 、 、 、 、 、 、 、 、 、

コンストラクターの詳細

#Initialize (条件) mongo

新しいmongoコンテキストを作成します。 これにより、操作は基礎のドライバーに委任されます。

例:

新しいコンテキストを作成します。

Mongo.new(criteria)

パラメーター:

  • 条件 基準

    基準。



270
271
272
273
274
275
276
# ファイル 'lib/mongoid/contextual/mongo.rb' 行270

デフォルト 初期化(条件)
  @criteria, @klass = 条件, 条件.klass
  @collection = @klass.コレクション
  条件.送信(:merge_type_Selection)
  @view = コレクション.find(条件.セレクター, セッション: _session)
  apply_options
end

インスタンス属性の詳細

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

属性のドキュメント_ローダーの値を返します。



54
55
56
# ファイル 'lib/mongoid/contextual/mongo.rb' 行54

デフォルト document_loader
  @documents_loader
end

#ビュー=ハッシュ(読み取り専用)

基準について explain を実行します。

例:

基準を説明します。

Band.where(name: "Depeche Mode").explain

パラメーター:

  • options ハッシュ

    カスタマイズ可能なオプション( Mongo::Collection::View::Explainable を参照)

次の値を返します。

  • ハッシュ

    explain の結果。



42
43
44
# ファイル 'lib/mongoid/contextual/mongo.rb' 行42

デフォルト 表示
  @view
end

# view mongoコレクションビュー。 (Mongocollectionview.) =オブジェクト(読み取り専用)



42
# ファイル 'lib/mongoid/contextual/mongo.rb' 行42

attr_reader :view

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

カウント(オプション = {{}, &stream) =整数

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

例:

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

context.count

指定されたオプションを持つドキュメントの数を取得します。

context.count(limit: 1)

指定されたブロックが true である場合のカウントを取得します。

context.count do |doc|
  doc.likes > 1
end

パラメーター:

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

    スキップ や 制限 などのオプションはカウントに含めることができます。

次の値を返します。

  • (整数)

    一致の数。



73
74
75
76
77
78
79
80
81
82
83
# ファイル 'lib/mongoid/contextual/mongo.rb' 行73

デフォルト count(options = {}, &ブロック)
  return スーパー(&ブロック) 場合 ブロック_指定

  場合 valid_for_count_documents
    表示.count_documents(options)
  else
    # TODO: 非推奨の for_js API を削除するときに、これを削除します。
    https://JIRA.mongodb.org/browse/MONGOID-{0 5681
    表示.count(options)
  end
end

delete = nil別名: #delete_all

データベース内のセレクターに一致するすべてのドキュメントを削除します。

例:

すべてのドキュメントを削除します。

context.delete

次の値を返します。

  • (nil)

    Nil.



114
115
116
# ファイル 'lib/mongoid/contextual/mongo.rb' 行114

デフォルト 削除
  表示.delete_many.delete_count
end

# delete = nil 別名 : delete_all

データベース内のセレクターに一致するすべてのドキュメントを破棄します。

例:

すべてのドキュメントを破棄します。

context.destroy

次の値を返します。

  • (nil)

    Nil.



125
126
127
128
129
130
131
# ファイル 'lib/mongoid/contextual/mongo.rb' 行125

デフォルト 破棄する
  .inject(0) 行う |count, doc|
    doc.破棄する
    count += 1 場合 acknowledged_write?
    count
  end
end

distinct<Object>

指定されたフィールドの db で個別の値を取得します。

例:

個別の値を取得します。

context.distinct(:name)

パラメーター:

  • フィールド ( string | Symbol )

    フィールドの名前。

次の値を返します。

  • 配列<Object>

    フィールドの個別の値。



142
143
144
145
146
147
148
149
# ファイル 'lib/mongoid/contextual/mongo.rb' 行142

デフォルト distinct(フィールド)
  name = klass.refine_localized_field_names(フィールド)

  表示.distinct(name).map 行う |価値|
    is_translation = " #{ name } _translations " == フィールド.to_s
    retention_dmongoize(name, 価値, is_translation)
  end
end

( & ブロック) =列挙型

コンテキストを反復処理します。 ブロックが提供された場合、 はそれぞれの Mongoid ドキュメントに降格し、それ以外の場合は列挙を返します。

例:

コンテキストを反復処理します。

context.each do |doc|
  puts doc.name
end

次の値を返します。

  • 列挙型

    列挙型。



160
161
162
163
164
165
166
167
168
169
# ファイル 'lib/mongoid/contextual/mongo.rb' 行160

デフォルト (&ブロック)
  場合 ブロック_指定
    document_for_iteration. 行う |doc|
      fail_document(doc, &ブロック)
    end
    自己
  else
    to_enum
  end
end

Estimated_count (オプション = {})=整数

クエリに一致するドキュメントの推定数を取得します。

countとは異なり、estimated_count はブロックを必要としないため、カウントは のように Enumerable で従来(ブロックあり)ではないためです。

例:

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

context.estimated_count

パラメーター:

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

    カウントに含める maxTimeMS などのオプション。

次の値を返します。

  • (整数)

    一致の数。



97
98
99
100
101
102
103
104
105
106
# ファイル 'lib/mongoid/contextual/mongo.rb' 行97

デフォルト Estimated_count(options = {})
  ただし、 自己.条件.セレクター.空の場合
    場合 klass.default_scoping?
      発生 Mongoid::Errors::Invalid EstimatedCountScoping.新着情報(自己.klass)
    else
      発生 Mongoid::Errors::Invalid EstimatedCount Criteria.新着情報(自己.klass)
    end
  end
  表示.Estimated_document_count(options)
end

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

注:

mongoはカウントされた b ツリー インデックスを使用していないため、ここではカウントは使用されません。

コンテキストにドキュメントが存在するかどうかを確認します。

例:

コンテキストにドキュメントが存在するかどうかを確認します。

context.exists?

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

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

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

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

パラメーター:

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

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

次の値を返します。

  • true | false

    カウントが 0 より大きい場合。 nil または false が渡された場合は常に false 。



190
191
192
193
194
195
196
197
198
# ファイル 'lib/mongoid/contextual/mongo.rb' 行190

デフォルト 存在するかどうか(id_or_条件 = :none)
  return false 場合 自己.表示.limit == 0
  ケース id_or_条件
  次の場合: :none 次に !!(表示.プロジェクション(_id: 1).limit(1).最初に)
  次の場合: nil, false 次に false
  次の場合: ハッシュ 次に mongo.新着情報(条件.WHERE(id_or_条件)).存在するかどうか
  else mongo.新着情報(条件.WHERE(_id: id_or_条件)).存在するかどうか
  end
end

5 や5ドキュメント| nil

条件のセレクターのデータベース内の 5 番目のドキュメントを取得します。

例:

5 番目のドキュメントを取得します。

context.fifth

次の値を返します。

  • (Document | nil)

    5 番目のドキュメント、または見つからない場合は nil 。



699
700
701
# ファイル 'lib/mongoid/contextual/mongo.rb' 行699

デフォルト 50
  retrieve_nth(4)
end

# 5 番目の。 =ドキュメント

条件のセレクターのデータベース内の 5 番目のドキュメントを取得します。見つからない場合はエラーが発生します。

例:

5 番目のドキュメントを取得します。

context.fifth!

次の値を返します。

次の値が発生します。



713
714
715
# ファイル 'lib/mongoid/contextual/mongo.rb' 行713

デフォルト 5 番目のドキュメント。
  50 || resume_document_not_find_error
end

# find_first =オブジェクト

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

ソートを適用せずに最初の結果を返す



256
257
258
259
260
261
# ファイル 'lib/mongoid/contextual/mongo.rb' 行256

デフォルト find_first
  場合 raw_doc = 表示.最初に
    doc = 工場.from_db(klass, raw_doc, 条件)
    Bearer_load([doc]).最初に
  end
end

# find_one_and_delete = find_one_and_delete = find_one_and_delete =ドキュメント

MongoDB の $findAndModify で使用される検索と変更コマンドを実行します。 これにより、見つかったドキュメントが削除されます。

例:

コマンドを実行します。

context.find_one_and_delete

次の値を返します。



247
248
249
250
251
# ファイル 'lib/mongoid/contextual/mongo.rb' 行247

デフォルト find_one_and_delete
  場合 doc = 表示.find_one_and_delete
    工場.from_db(klass, doc)
  end
end

# find_one_and_replace (置換、オプション = {}) =ドキュメント

MongoDB の $findAndModify で使用される検索と変更コマンドを実行します。

例:

コマンドを実行します。

context.find_one_and_update({ likes: 1 })

パラメーター:

  • replacement ハッシュ

    置換。

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

    コマンド オプション。

オプション ハッシュ( options ):

  • :return_document : 前 | : 後

    更新前または更新後に更新されたドキュメントを返します。

  • :upsert true | false

    ドキュメントが存在しない場合は作成します。

次の値を返します。



234
235
236
237
238
# ファイル 'lib/mongoid/contextual/mongo.rb' 行234

デフォルト find_one_and_replace(replacement, options = {})
  場合 doc = 表示.find_one_and_replace(replacement, options)
    工場.from_db(klass, doc)
  end
end

#find_one_and_update(update, options = {}) ⇒ Document

MongoDB の $findAndModify で使用される検索と変更コマンドを実行します。

例:

コマンドを実行します。

context.find_one_and_update({ "$inc" => { likes: 1 }})

パラメーター:

  • update ハッシュ

    の更新。

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

    コマンド オプション。

オプション ハッシュ( options ):

  • :return_document : 前 | : 後

    更新前または更新後に更新されたドキュメントを返します。

  • :upsert true | false

    ドキュメントが存在しない場合は作成します。

次の値を返します。



214
215
216
217
218
# ファイル 'lib/mongoid/contextual/mongo.rb' 行214

デフォルト find_one_and_update(update, options = {})
  場合 doc = 表示.find_one_and_update(update, options)
    工場.from_db(klass, doc)
  end
end

最初に#(制限 = nil)=ドキュメント| nil別名: 1

注:

条件に他のソートが定義されていない場合に、_id にソートを自動的に追加すると、パフォーマンスの問題が発生する可能性があります。 最初または最後に使用し、条件にソートが定義されていない場合に、予期しないパフォーマンスの低下が発生した場合は、代わりに使用してください。 では順序が保証されないことに注意してください。

条件のセレクターのデータベース内の最初のドキュメントを取得します。

例:

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

context.first

パラメーター:

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

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

次の値を返します。

  • (Document | nil)

    最初のドキュメント、または見つからない場合は nil 。



550
551
552
553
554
555
556
# ファイル 'lib/mongoid/contextual/mongo.rb' 行550

デフォルト 最初に(limit = nil)
  場合 limit.nil?
    retrieve_nth(0)
  else
    retrieve_nth_with_limit(0, limit)
  end
end

#first!Document

注:

条件に他のソートが定義されていない場合に、_id にソートを自動的に追加すると、パフォーマンスの問題が発生する可能性があります。 最初に使用すると、予期しないパフォーマンスが低下した場合があります。 または 最後に指定します。条件にソートが定義されていない場合は、 が使用されます 。 ください。 が に注意してください。 は順序を保証しません。

条件のセレクターのデータベース内の最初のドキュメントを取得します。見つからない場合はエラーが発生します。

例:

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

context.first!

次の値を返します。

次の値が発生します。



575
576
577
# ファイル 'lib/mongoid/contextual/mongo.rb' 行575

デフォルト 1 つ目。
  最初に || resume_document_not_find_error
end

4 番目の =ドキュメント| nil

条件のセレクターのデータベース内の 4 番目のドキュメントを取得します。

例:

4 番目のドキュメントを取得します。

context.fourth

次の値を返します。

  • (Document | nil)

    4 番目のドキュメント、または見つからない場合は nil 。



675
676
677
# ファイル 'lib/mongoid/contextual/mongo.rb' 行675

デフォルト 4 つ
  retrieve_nth(3)
end

4 番目の。 =ドキュメント

条件のセレクターの データベース内の 4 番目のドキュメントを取得します。見つからない場合はエラーが発生します。

例:

4 番目のドキュメントを取得します。

context.fourth!

次の値を返します。

次の値が発生します。



689
690
691
# ファイル 'lib/mongoid/contextual/mongo.rb' 行689

デフォルト 4 つ目。
  4 つ || resume_document_not_find_error
end

#last(limit = nil) ⇒ Document | nil

注:

条件に他のソートが定義されていない場合に、_id にソートを自動的に追加すると、パフォーマンスの問題が発生する可能性があります。 最初または最後に使用し、条件にソートが定義されていない場合に、予期しないパフォーマンスの低下が発生した場合は、代わりに使用してください。 では順序が保証されないことに注意してください。

条件のセレクターのデータベース内の最後のドキュメントを取得します。

例:

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

context.last

パラメーター:

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

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

次の値を返します。

  • (Document | nil)

    最後のドキュメント、または見つからない場合は nil 。



593
594
595
596
597
598
599
# ファイル 'lib/mongoid/contextual/mongo.rb' 行593

デフォルト last(limit = nil)
  場合 limit.nil?
    retrieve_nth_to_last(0)
  else
    retrieve_nth_to_last_with_limit(0, limit)
  end
end

#last!Document

注:

条件に他のソートが定義されていない場合に、_id にソートを自動的に追加すると、パフォーマンスの問題が発生する可能性があります。 最初に使用すると、予期しないパフォーマンスが低下した場合があります。 または 最後に指定します。条件にソートが定義されていない場合は、 が使用されます 。 ください。 が に注意してください。 は順序を保証しません。

条件のセレクターのデータベース内の最後のドキュメントを取得します。見つからない場合はエラーが発生します。

例:

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

context.last!

次の値を返します。

次の値が発生します。



617
618
619
# ファイル 'lib/mongoid/contextual/mongo.rb' 行617

デフォルト 最後に、次を追加します。
  last || resume_document_not_find_error
end

長さ整数別名:サイズ

データベース内のクエリ セレクターに一致するドキュメントの数を返します。

例:

長さを取得します。

context.length

次の値を返します。

  • (整数)

    ドキュメントの数。



287
288
289
# ファイル 'lib/mongoid/contextual/mongo.rb' 行287

デフォルト Length
  自己.count
end

制限(値) mongo

データベースから返されるドキュメントの数を制限します。

例:

ドキュメントを制限します。

context.limit(20)

パラメーター:

  • 価値 (整数)

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

次の値を返します。

  • mongo

    コンテキスト。



300
301
302
# ファイル 'lib/mongoid/contextual/mongo.rb' 行300

デフォルト limit(価値)
  @view = 表示.limit(価値) および 自己
end

# load_async =オブジェクト

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

コンテキストのドキュメントを読み込むタスクをスケジュールします。

Mongoid の構成に応じて、スケジュールされたタスクは呼び出し元のスレッドですぐに実行されることも、非同期実行用にスケジュールされることもできます。



776
777
778
# ファイル 'lib/mongoid/contextual/mongo.rb' 行776

デフォルト load_async
  @documents_loader ||= DocumentsLoader.新着情報(表示, klass, 条件)
end

# map_reduce (map, reduce)= mapReduce

コンテキストから map/reduce 操作を開始します。

例:

map-reduce を開始します。

context.map_reduce(map, reduce)

パラメーター:

  • map ( string )

    map JavaScript関数。

  • reduce ( string )

    reduce JavaScript関数。

次の値を返します。

  • MapReduce

    map/reduce 遅延ラッパー。



313
314
315
# ファイル 'lib/mongoid/contextual/mongo.rb' 行313

デフォルト map_reduce(map, reduce)
  mapReduce.新着情報(コレクション, 条件, map, reduce)
end

# 選択 (* フィールド)= オブジェクト | Array[Object]<Object>

データベースから単一のフィールド値を選択します。

例:

フィールドを選択します。

context.pick(:_id)

パラメーター:

  • *fields ( [ string | Symbol ]... )

    選択するフィールド。

次の値を返します。

  • オブジェクト | 配列 <Object>

    選択された値。



361
362
363
# ファイル 'lib/mongoid/contextual/mongo.rb' 行361

デフォルト 選択(*フィールド)
  limit(1).プル型(*フィールド).最初に
end

プル型 (* フィールド)= 配列= オブジェクト=================================配列未満<Object><Object>

データベースからフィールド値を取得します。 コンテキストのデータベースで見つかったドキュメントごとに 1 つの結果を返します。 結果は、Mongoid フィールド型に従って正規化されます。 結果には重複値と nil 値が含まれる場合があることに注意してください。

例:

フィールドをプルします。

context.pluck(:_id)

パラメーター:

  • *fields ( [ string | Symbol ]... )

    プルするフィールド。これには、ドット表記を使用したネストされたフィールドが含まれる場合があります。

次の値を返します。

  • 配列<Object> | Array[Array[Object<Object> ] ]

    プルされた値。 *fields 引数に単一の値が含まれている場合、配列内の各結果は単一の値になります。 それ以外の場合、配列内の各結果は値の配列になります。



333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
# ファイル 'lib/mongoid/contextual/mongo.rb' 行333

デフォルト プル型(*フィールド)
  複数のフィールドを同じフィールド名にマッピングできます。 たとえば、プラグイン
  フィールドとその _translations フィールドは、 データベース内の同じフィールドにマップされます。
  このため、リクエストされたフィールドを追跡する必要があります。
  Normalized_field_names = []
  Normalized_select = フィールド.inject({}) 行う |ハッシュ, f|
    db_fn = klass.database_field_name(f)
    Normalized_field_names.プッシュ(db_fn)
    ハッシュ[klass.refine_localized_field_names(f)] = true
    ハッシュ
  end

  表示.プロジェクション(Normalized_select).reduce([]) 行う |プルド, doc|
    values = Normalized_field_names.map 行う |n|
      insert_value(doc, n)
    end
    プルド < (values.サイズ == 1 ? values.最初に : values)
  end
end

=ドキュメント| nil

条件のセレクターのデータベース内の 2 番目のドキュメントを取得します。

例:

2 番目のドキュメントを取得します。

context.second

次の値を返します。

  • (Document | nil)

    2 番目のドキュメント、または見つからない場合は nil 。



627
628
629
# ファイル 'lib/mongoid/contextual/mongo.rb' 行627

デフォルト 
  retrieve_nth(1)
end

#秒です。 =ドキュメント

条件のセレクターのデータベース内の 2 番目のドキュメントを取得します。見つからない場合はエラーが発生します。

例:

2 番目のドキュメントを取得します。

context.second!

次の値を返します。

次の値が発生します。



641
642
643
# ファイル 'lib/mongoid/contextual/mongo.rb' 行641

デフォルト 秒です。
   || resume_document_not_find_error
end

#second_to_last =ドキュメント| nil

条件のセレクターのデータベース内の最後から 2 番目のドキュメントを取得します。

スローされます。

例:

最後から 2 番目のドキュメントを取得します。

context.second_to_last

次の値を返します。

  • (Document | nil)

    最後から 2 番目のドキュメント、または存在しない場合は nil



725
726
727
# ファイル 'lib/mongoid/contextual/mongo.rb' 行725

デフォルト second_to_last
  retrieve_nth_to_last(1)
end

秒_to_last. =ドキュメント

条件のセレクターのデータベース内の最後から 2 番目のドキュメントを取得します。見つからない場合はエラーが発生します。

例:

最後から 2 番目のドキュメントを取得します。

context.second_to_last!

次の値を返します。

次の値が発生します。



739
740
741
# ファイル 'lib/mongoid/contextual/mongo.rb' 行739

デフォルト second_to_last.
  second_to_last || resume_document_not_find_error
end

#skip (値) mongo

指定された数のドキュメントをスキップします。

例:

ドキュメントをスキップします。

context.skip(20)

パラメーター:

  • 価値 (整数)

    スキップするドキュメントの数。

次の値を返します。

  • mongo

    コンテキスト。



480
481
482
# ファイル 'lib/mongoid/contextual/mongo.rb' 行480

デフォルト スキップ(価値)
  @view = 表示.スキップ(価値) および 自己
end

#sort(values = nil, &block) ⇒ Mongo

指定された 仕様でドキュメントをソートします。

例:

ドキュメントを並べ替えます。

context.sort(name: -1, title: 1)

パラメーター:

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

    フィールドと方向( 1 /- 1 )のペアとしての並べ替え値。

次の値を返します。

  • mongo

    コンテキスト。



493
494
495
496
497
498
499
500
501
502
# ファイル 'lib/mongoid/contextual/mongo.rb' 行493

デフォルト sort(values = nil, &ブロック)
  場合 ブロック_指定
    スーパー(&ブロック)
  else
    条件を 更新
    @criteria = 条件.order_by(values)
    apply_option(:sort)
    自己
  end
end

#take(limit = nil) ⇒ Document | Array<Document>

指定された数のドキュメントをデータベースから取得します。

例:

10ドキュメントを取得

context.take(10)

パラメーター:

  • limit (Integer | nil) (デフォルトはnil

    または nil を返すドキュメントの数。

次の値を返します。

  • (Document | Array<Document>)

    ドキュメントのリスト、または値が指定されていない場合は 1 つのドキュメント。



374
375
376
377
378
379
380
381
382
# ファイル 'lib/mongoid/contextual/mongo.rb' 行374

デフォルト (limit = nil)
  場合 limit
    limit(limit).to_a
  else
    最初に _ を実行して、Mongo#first メソッドは使用されなくなり、
    結果はソートされません。
    limit(1).to_a.最初に
  end
end

#take!Document

データベースから 1 つのドキュメントを取得し、ドキュメントがない場合はエラーが発生します。

例:

ドキュメントを取る

context.take!

次の値を返します。

次の値が発生します。



393
394
395
396
397
398
399
400
401
# ファイル 'lib/mongoid/contextual/mongo.rb' 行393

デフォルト と一緒に使用されます
  最初に _ を実行して、Mongo#first メソッドは使用されなくなり、
  結果はソートされません。
  場合 fst = limit(1).to_a.最初に
    fst
  else
    発生 Errors::DocumentNotFound.新着情報(klass, nil, nil)
  end
end

# totaly (フィールド) =ハッシュ

単一のフィールドの値のカウントのハッシュを取得します。 たとえば、次のドキュメントが データベースにあるとします。

{ _id: 1, age: 21 }
{ _id: 2, age: 21 }
{ _id: 3, age: 22 }

Model.tally("age")

次の結果が得られます。

{ 21 => 2, 22 => 1 }

配列または embedded_many 関連付け内のフィールドを集計する場合:

{ _id: 1, array: [ { x: 1 }, { x: 2 } ] }
{ _id: 2, array: [ { x: 1 }, { x: 2 } ] }
{ _id: 3, array: [ { x: 1 }, { x: 3 } ] }

Model.tally("array.x")

結果として得られるハッシュのキーは配列です。

{ [ 1, 2 ] => 2, [ 1, 3 ] => 1 }

ハッシュの配列内の要素を集計し、かつキーがハッシュの一部に存在しない場合、結果のハッシュには nil キーが含まれないことに注意してください。

{ _id: 1, array: [ { x: 1 }, { x: 2 }, { y: 3 } ] }

Model.tally("array.x")
# => { [ 1, 2 ] => 1 }

パラメーター:

  • フィールド ( string | Symbol )

    フィールド名。

次の値を返します。

  • ハッシュ

    カウントのハッシュ。



440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
# ファイル 'lib/mongoid/contextual/mongo.rb' 行440

デフォルト (フィールド)
  name = klass.refine_localized_field_names(フィールド)

  fld = klass.走査_関連付け_ツリー(name)
  パイプライン = [ { " $group " => { _id: " $ #{ name } ", count: { " $sum ": 1 } } } } ]パイプライン unshift  " $match " =表示> フィルター ビュー 除く 。 フィルター 。 空白の場合コレクション集計パイプライン  reduce  { }  do |合計,ドキュメント| is_translation = " #{ name } _translations " == field . to_s
    val = doc [ " _id " ] key =場合 is_a? 配列 map do | v | mongoize_with_field  fld  v  is_translation エンドポイントでは、mongoize_with_fieldfld  val  is_translation エンドポイントになりました。タリー ハッシュにキーが既に存在する時間は、値がデータベースに異なる方法で保存されている場合のみです。同じ値。この状況が発生するタイミングは、ローカル化されたフィールドを使用している場合です。サーバー クエリでは、異なる言語で他の 値を持つハッシュを グループ化することは ありません が、 # デーモン化された値は現在のロケールでの翻訳だけであり、これらは等しくないハッシュの複数にわたって同じになる場合があります。    合計[キー] |= 0合計[キー] +=ドキュメント[ "カウント" ]合計終了終了

3 つ目の =ドキュメント| nil

条件のセレクターのデータベース内の 3 番目のドキュメントを取得します。

例:

3 番目のドキュメントを取得します。

context.third

次の値を返します。

  • (Document | nil)

    3 番目のドキュメント、または見つからない場合は nil 。



651
652
653
# ファイル 'lib/mongoid/contextual/mongo.rb' 行651

デフォルト 3 つ目の
  retrieve_nth(2)
end

3 つ目の# =ドキュメント

条件のセレクターのデータベース内の 3 番目のドキュメントを取得します。見つからない場合はエラーが発生します。

例:

3 番目のドキュメントを取得します。

context.third!

次の値を返します。

次の値が発生します。



665
666
667
# ファイル 'lib/mongoid/contextual/mongo.rb' 行665

デフォルト 3 つ目。
  3 つ目の || resume_document_not_find_error
end

# Third_to_last =ドキュメント| nil

条件のセレクターのデータベース内の最後から 3 番目のドキュメントを取得します。

スローされます。

例:

最後から 3 番目のドキュメントを取得します。

context.third_to_last

次の値を返します。

  • (Document | nil)

    最後から 3 番目のドキュメント、または存在しない場合は nil



751
752
753
# ファイル 'lib/mongoid/contextual/mongo.rb' 行751

デフォルト Third_to_last
  retrieve_nth_to_last(2)
end

# Third_to_last =ドキュメント

条件の セレクター のデータベース内の最後から 3 番目のドキュメントを取得します。見つからない場合はエラーが発生します。

例:

最後から 3 番目のドキュメントを取得します。

context.third_to_last!

次の値を返します。

次の値が発生します。



765
766
767
# ファイル 'lib/mongoid/contextual/mongo.rb' 行765

デフォルト Third_to_last.
  Third_to_last || resume_document_not_find_error
end

#update(attributes = nil, opts = {}) ⇒ nil | false

最初に一致するドキュメントを不可分的に更新します。

例:

最初に一致するドキュメントを更新します。

context.update({ "$set" => { name: "Smiths" }})

パラメーター:

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

    ドキュメントの新しい属性。

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

    更新操作オプション。

オプション ハッシュ( opts ):

  • :array_filters 配列

    アップデートを適用する配列要素を指定するフィルターのセット。

次の値を返します。

  • nil | false

    属性が指定されていない場合は false。



516
517
518
# ファイル 'lib/mongoid/contextual/mongo.rb' 行516

デフォルト update(属性 = nil, ops = {})
  update_documents(属性, :update_one, ops)
end

#update_all(attributes = nil, opts = {}) ⇒ nil | false

一致するすべてのドキュメントを不可分的に更新します。

例:

一致するすべてのドキュメントをアップデートします。

context.update_all({ "$set" => { name: "Smiths" }})

パラメーター:

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

    各ドキュメントの新しい属性。

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

    更新操作オプション。

オプション ハッシュ( opts ):

  • :array_filters 配列

    アップデートを適用する配列要素を指定するフィルターのセット。

次の値を返します。

  • nil | false

    属性が指定されていない場合は false。



532
533
534
# ファイル 'lib/mongoid/contextual/mongo.rb' 行532

デフォルト update_all(属性 = nil, ops = {})
  update_documents(属性, :update_many, ops)
end