クラス: Mongoid::Contextual::Mongo

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

Overview

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

名前空間で定義済み

クラス: DocumentsLoader

定数の概要の削減

OPTIONS =

オプション 定数。

%i[hint
limit
スキップ
sort
batch_size
max_scan
max_time_ms
スナップショット
comment
読み取り
cursor_type
collation].freeze

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

Atomic::UPDATES

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

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

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

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

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

#blank?

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

#create_pipeline#eager_load#eager_load_with_lookup#eager_loadable?#preload#preload_for_lookup#switch_local_and_foreign_fields?

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

#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)

パラメーター:

  • 条件 基準

    基準。



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

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

インスタンス属性の詳細

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

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



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

デフォルト document_loader
  @documents_loader
end

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

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

例:

基準を説明します。

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

パラメーター:

  • options ハッシュ

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

次の値を返します。

  • ハッシュ

    explain の結果。



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

デフォルト 表示
  @view
end

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



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

attr_reader :view

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

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

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

例:

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

context.count

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

context.count(limit: 1)

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

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

パラメーター:

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

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

次の値を返します。

  • (整数)

    一致の数。



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

デフォルト 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.



112
113
114
# ファイル 'lib/mongoid/contextual/mongo.rb' 行112

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

# delete = nil 別名 : delete_all

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

例:

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

context.destroy

次の値を返します。

  • (nil)

    Nil.



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

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

distinct<Object>

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

例:

個別の値を取得します。

context.distinct(:name)

パラメーター:

  • フィールド ( string | Symbol )

    フィールドの名前。

次の値を返します。

  • 配列<Object>

    フィールドの個別の値。



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

デフォルト 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

次の値を返します。

  • 列挙型

    列挙型。



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

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

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

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

countとは異なり、estimated_count はブロックを必要としないため、カウントは のように列挙可能で従来から(ブロックにより) 定義されていないためです。

例:

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

context.estimated_count

パラメーター:

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

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

次の値を返します。

  • (整数)

    一致の数。



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

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

    発生 Mongoid::Errors::Invalid EstimatedCount Criteria.新着情報(klass)

  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 。



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

デフォルト 存在するかどうか(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 番目の document を取得します。

例:

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

context.fifth

次の値を返します。

  • (Document | nil)

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



684
685
686
# ファイル 'lib/mongoid/contextual/mongo.rb' 行684

デフォルト 50
  retrieve_nth(4)
end

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

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

例:

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

context.fifth!

次の値を返します。

次の値が発生します。



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

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

# find_first =オブジェクト

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

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



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

デフォルト find_first
  return ただし、 raw_doc = 表示.最初に

  doc = 工場.from_db(klass, raw_doc, 条件)
  Bearer_load([ doc ]).最初に
end

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

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

例:

コマンドを実行します。

context.find_one_and_delete

次の値を返します。



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

デフォルト find_one_and_delete
  return ただし、 doc = 表示.find_one_and_delete

  工場.from_db(klass, doc)
end

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

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

例:

コマンドを実行します。

context.find_one_and_update({ likes: 1 })

パラメーター:

  • replacement ハッシュ

    置換。

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

    コマンド オプション。

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

  • :return_document : 前 | : 後

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

  • :upsert true | false

    documentが存在しない場合は作成します。

次の値を返します。



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

デフォルト find_one_and_replace(replacement, options = {})
  return ただし、 doc = 表示.find_one_and_replace(replacement, options)

  工場.from_db(klass, doc)
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

    documentが存在しない場合は作成します。

次の値を返します。



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

デフォルト find_one_and_update(update, options = {})
  return ただし、 doc = 表示.find_one_and_update(update, options)

  工場.from_db(klass, doc)
end

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

注:

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

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

例:

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

context.first

パラメーター:

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

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

次の値を返します。

  • (Document | nil)

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



535
536
537
538
539
540
541
# ファイル 'lib/mongoid/contextual/mongo.rb' 行535

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

#first!Document

注:

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

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

例:

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

context.first!

次の値を返します。

次の値が発生します。



560
561
562
# ファイル 'lib/mongoid/contextual/mongo.rb' 行560

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

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

条件のセレクターのデータベース内の 4 番目の document を取得します。

例:

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

context.fourth

次の値を返します。

  • (Document | nil)

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



660
661
662
# ファイル 'lib/mongoid/contextual/mongo.rb' 行660

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

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

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

例:

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

context.fourth!

次の値を返します。

次の値が発生します。



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

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

#last(limit = nil) ⇒ Document | nil

注:

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

条件のセレクターのデータベース内の最後のdocumentを取得します。

例:

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

context.last

パラメーター:

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

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

次の値を返します。

  • (Document | nil)

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



578
579
580
581
582
583
584
# ファイル 'lib/mongoid/contextual/mongo.rb' 行578

デフォルト 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!

次の値を返します。

次の値が発生します。



602
603
604
# ファイル 'lib/mongoid/contextual/mongo.rb' 行602

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

長さ整数別名:サイズ

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

例:

長さを取得します。

context.length

次の値を返します。

  • (整数)

    ドキュメントの数。



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

デフォルト Length
  count
end

制限(値) mongo

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

例:

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

context.limit(20)

パラメーター:

  • 価値 (整数)

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

次の値を返します。

  • mongo

    コンテキスト。



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

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

# load_async =オブジェクト

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

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

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



761
762
763
# ファイル 'lib/mongoid/contextual/mongo.rb' 行761

デフォルト 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 遅延ラッパー。



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

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

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

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

例:

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

context.pick(:_id)

パラメーター:

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

    選択するフィールド。

次の値を返します。

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

    選択された値。



349
350
351
# ファイル 'lib/mongoid/contextual/mongo.rb' 行349

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

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

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

例:

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

context.pluck(:_id)

パラメーター:

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

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

次の値を返します。

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

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



332
333
334
335
336
337
338
339
# ファイル 'lib/mongoid/contextual/mongo.rb' 行332

デフォルト プル型(*フィールド)
  複数のフィールドを同じフィールド名にマッピングできます。例、
  フィールドとその _translationsフィールドが同じにマップされている場合
  データベースの #フィールド。このため、次を準備する必要があります:
  具体的には、 #プロジェクションを参照してください。
  prep = preserve_pulack(フィールド, 準備_プロジェクション: true)
  plack_from_documents(表示.プロジェクション(prep[:プロジェクション]), prep[:field_names])
end

=ドキュメント| nil

条件のセレクターのデータベース内の 2 番目の document を取得します。

例:

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

context.second

次の値を返します。

  • (Document | nil)

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



612
613
614
# ファイル 'lib/mongoid/contextual/mongo.rb' 行612

デフォルト 
  retrieve_nth(1)
end

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

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

例:

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

context.second!

次の値を返します。

次の値が発生します。



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

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

#second_to_last =ドキュメント| nil

条件のセレクターのデータベース内の最後から 2 番目のdocumentを取得します。

スローされます。

例:

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

context.second_to_last

次の値を返します。

  • (Document | nil)

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



710
711
712
# ファイル 'lib/mongoid/contextual/mongo.rb' 行710

デフォルト second_to_last
  retrieve_nth_to_last(1)
end

秒_to_last. =ドキュメント

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

例:

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

context.second_to_last!

次の値を返します。

次の値が発生します。



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

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

#skip (値) mongo

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

例:

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

context.skip(20)

パラメーター:

  • 価値 (整数)

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

次の値を返します。

  • mongo

    コンテキスト。



465
466
467
# ファイル 'lib/mongoid/contextual/mongo.rb' 行465

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

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

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

例:

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

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

パラメーター:

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

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

次の値を返します。

  • mongo

    コンテキスト。



478
479
480
481
482
483
484
485
486
487
# ファイル 'lib/mongoid/contextual/mongo.rb' 行478

デフォルト 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 つのドキュメント。



362
363
364
365
366
367
368
369
370
# ファイル 'lib/mongoid/contextual/mongo.rb' 行362

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

#take!Document

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

例:

ドキュメントを取る

context.take!

次の値を返します。

次の値が発生します。



381
382
383
384
385
386
387
# ファイル 'lib/mongoid/contextual/mongo.rb' 行381

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

  fst
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 )

    フィールド名。

次の値を返します。

  • ハッシュ

    カウントのハッシュ。



426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
# ファイル 'lib/mongoid/contextual/mongo.rb' 行426

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

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

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

条件のセレクターのデータベース内の 3 番目の document を取得します。

例:

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

context.third

次の値を返します。

  • (Document | nil)

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



636
637
638
# ファイル 'lib/mongoid/contextual/mongo.rb' 行636

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

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

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

例:

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

context.third!

次の値を返します。

次の値が発生します。



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

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

# Third_to_last =ドキュメント| nil

条件のセレクターのデータベース内の最後から 3 番目のdocumentを取得します。

スローされます。

例:

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

context.third_to_last

次の値を返します。

  • (Document | nil)

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



736
737
738
# ファイル 'lib/mongoid/contextual/mongo.rb' 行736

デフォルト Third_to_last
  retrieve_nth_to_last(2)
end

# Third_to_last =ドキュメント

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

例:

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

context.third_to_last!

次の値を返します。

次の値が発生します。



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

デフォルト 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。



501
502
503
# ファイル 'lib/mongoid/contextual/mongo.rb' 行501

デフォルト 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。



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

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