モジュール: Mongo::Collection::View::Writable

次のドキュメントに含まれます。
Mongo::Collection::View
定義:
lib/mongo/ コレクション/view/writeable.rb

Overview

コレクション ビューの書込み関連の動作を定義します。

以来

  • 2.0.0

定数の概要の削減

Array_Filters =

配列フィルター フィールド定数。

以来

  • 2.5.0

'array_filters'

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

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

delete_many (opts = {}) = 結果 =結果

コレクションからドキュメントを削除します。

例:

コレクションから複数のドキュメントを削除します。

collection_view.delete_many

パラメーター:

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

    オプション。

  • options (ハッシュ) —

    カスタマイズ可能なオプションのセット

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

  • :collation (ハッシュ) —

    使用する照合。

  • :session (セッション) —

    使用するセッション。

  • :hint (ハッシュ | string ) —

    この操作に使用するインデックス。ハッシュ(例:{ _id:1 } )または String(例:"ID").

  • :write_concern (ハッシュ) —

    書込み保証(write concern) オプション。 :w => 整数、 :fsync => ブール値、 :j => ブール値 になります。

  • :let (ハッシュ) —

    コマンドで使用する変数のマッピング。 詳細については、 サーバーのドキュメントを 参照してください。

  • :comment (オブジェクト) —

    このコマンドに添付するユーザー指定のコメント。

次の値を返します。

  • (結果) —

    データベースからの応答。

以来

  • 2.0.0



247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
# ファイル 'lib/mongo/ コレクション/view/writeable.rb' は、247 行

デフォルト delete_many(ops = {})
  with_session(ops) 行う |セッション|
    write_concern = 場合 ops[:write_concern]
                      WriteConcern.得る(ops[:write_concern])
                    else
                      write_concern_with_session(セッション)
                    end

    クエリ キャッシュ.clear_namespace(コレクション.namespace)

    delete_doc = {
      操作::q => フィルター,
      操作::LIMIT => 0,
      hint: ops[:hint],
      collation: ops[:collation] || ops[「照合」] || collation,
    }.compact
    context = 操作::Context.新着情報(
      クライアント: クライアント,
      セッション: セッション,
      operation_timeouts: operation_timeouts(ops)
    )
    操作 = 操作::削除.新着情報(
      次の値を削除します。 [ delete_doc ],
      db_name: コレクション.database.name,
      coll_name: コレクション.name,
      write_concern: write_concern,
      bypass_document_validation: !!ops[:bypass_document_validation],
      セッション: セッション,
      let: ops[:let],
      comment: ops[:comment]
    )
    追跡.track_operation(操作, context, op_name: 'deleteMany') 行う
      nro_write_with_retry(write_concern, context: context) 行う |接続, _txn_num, context|
        操作.execution_with_ connection(接続, context: context)
      end
    end
  end
end

# delete_one (ops = {}) =結果

コレクションからドキュメントを削除します。

例:

コレクションから単一のドキュメントを削除します。

collection_view.delete_one

パラメーター:

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

    オプション。

  • options (ハッシュ) —

    カスタマイズ可能なオプションのセット

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

  • :collation (ハッシュ) —

    使用する照合。

  • :comment (オブジェクト) —

    このコマンドに添付するユーザー指定のコメント。

  • :hint (ハッシュ | string ) —

    この操作に使用するインデックス。ハッシュ(例:{ _id:1 } )または String(例:"ID").

  • :let (ハッシュ) —

    コマンドで使用する変数のマッピング。 詳細については、 サーバーのドキュメントを 参照してください。

  • :session (セッション) —

    使用するセッション。

  • :write_concern (ハッシュ) —

    書込み保証(write concern) オプション。 :w => 整数、 :fsync => ブール値、 :j => ブール値 になります。

次の値を返します。

  • (結果) —

    データベースからの応答。

以来

  • 2.0.0



311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
# ファイル 'lib/mongo/ コレクション/view/writeable.rb' は、311 行

デフォルト delete_one(ops = {})
  with_session(ops) 行う |セッション|
    write_concern = 場合 ops[:write_concern]
                      WriteConcern.得る(ops[:write_concern])
                    else
                      write_concern_with_session(セッション)
                    end

    クエリ キャッシュ.clear_namespace(コレクション.namespace)

    delete_doc = {
      操作::q => フィルター,
      操作::LIMIT => 1,
      hint: ops[:hint],
      collation: ops[:collation] || ops[「照合」] || collation,
    }.compact

    context = 操作::Context.新着情報(
      クライアント: クライアント,
      セッション: セッション,
      operation_timeouts: operation_timeouts(ops)
    )
    write_with_retry(write_concern, context: context) 行う |接続, txn_num, context|
      操作::削除.新着情報(
        次の値を削除します。 [ delete_doc ],
        db_name: コレクション.database.name,
        coll_name: コレクション.name,
        write_concern: write_concern,
        bypass_document_validation: !!ops[:bypass_document_validation],
        セッション: セッション,
        txn_num: txn_num,
        let: ops[:let],
        comment: ops[:comment]
      ).execution_with_ connection(接続, context: context)
    end
  end
end

#find_one_and_delete(opts = {}) ⇒ BSON::Document?

findAndModify 経由でデータベース内の単一のドキュメントを検索し、削除し、元のドキュメントを返します。

例:

1 つのドキュメントを検索して削除します。

view.find_one_and_delete

パラメーター:

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

    オプション。

  • options (ハッシュ) —

    カスタマイズ可能なオプションのセット

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

  • :max_time_ms (整数) —

    コマンドの実行を許可する最大時間(ミリ秒単位)。 このオプションは非推奨です。代わりに :timeout_ms を使用してください。

  • :プロジェクション (ハッシュ) —

    返されるドキュメントに含める、または除外するフィールド。

  • :sort (ハッシュ) —

    結果セットがソートされるキーと方向のペア。

  • :collation (ハッシュ) —

    使用する照合。

  • :session (セッション) —

    使用するセッション。

  • :hint (ハッシュ | string ) —

    この操作に使用するインデックス。ハッシュ(例:{ _id:1 } )または String(例:"ID").

  • :write_concern (ハッシュ) —

    書込み保証(write concern) オプション。 :w => 整数、 :fsync => ブール値、 :j => ブール値 になります。

  • :let (ハッシュ) —

    コマンドで使用する変数のマッピング。 詳細については、 サーバーのドキュメントを 参照してください。

  • :comment (オブジェクト) —

    このコマンドに添付するユーザー指定のコメント。

次の値を返します。

  • (BSON::Document, nil) —

    ドキュメント(見つかった場合)。

以来

  • 2.0.0



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# ファイル 'lib/mongo/ コレクション/view/writeable.rb' は、61 行

デフォルト find_one_and_delete(ops = {})
  with_session(ops) 行う |セッション|
    write_concern = 場合 ops[:write_concern]
                      WriteConcern.得る(ops[:write_concern])
                    else
                      write_concern_with_session(セッション)
                    end

    クエリ キャッシュ.clear_namespace(コレクション.namespace)

    cmd = {
      findAndModify: コレクション.name,
      query: フィルター,
      以下を削除します。 true,
      フィールド: プロジェクション,
      sort: sort,
      maxTimeMS: max_time_ms,
      bypassDocumentValidation: ops[:bypass_document_validation],
      hint: ops[:hint],
      collation: ops[:collation] || ops[「照合」] || collation,
      let: ops[:let],
      comment: ops[:comment],
    }.compact

    context = 操作::Context.新着情報(
      クライアント: クライアント,
      セッション: セッション,
      operation_timeouts: operation_timeouts(ops)
    )
    write_with_retry(write_concern, context: context) 行う |接続, txn_num, context|
      操作::WriteCommand.新着情報(
        セレクター: cmd,
        db_name: database.name,
        write_concern: write_concern,
        セッション: セッション,
        txn_num: txn_num
      ).execution_with_ connection(接続, context: context)
    end
  end.最初に&.fetch('value', nil)
end

# find_one_and_replace (置換、opts = {{}) = BSON::Document

1 つのドキュメントを検索して置き換えます。

例:

ドキュメントを検索して置き換え、元のドキュメントを返します。

view.find_one_and_replace({ name: 'test' }, :return_document => :before)

ドキュメントを検索して置き換え、新しいドキュメントを返します。

view.find_one_and_replace({ name: 'test' }, :return_document => :after)

パラメーター:

  • replacement ( BSON::Document ) —

    置換。

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

    オプション。

  • options (ハッシュ) —

    カスタマイズ可能なオプションのセット

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

  • :return_document (記号) —

    : 前 または : 後 。

  • :upsert ( true 、 false ) —

    ドキュメントが存在しない場合にアップサートを実行するかどうか。

  • :bypass_document_validation ( true 、 false ) —

    ドキュメント レベルの検証をスキップするかどうか。

  • :collation (ハッシュ) —

    使用する照合。

  • :hint (ハッシュ | string ) —

    この操作に使用するインデックス。ハッシュ(例:{ _id:1 } )または String(例:"ID").

  • :write_concern (ハッシュ) —

    書込み保証(write concern) オプション。 :w => 整数、 :fsync => ブール値、 :j => ブール値 になります。

  • :let (ハッシュ) —

    コマンドで使用する変数のマッピング。 詳細については、 サーバーのドキュメントを 参照してください。

次の値を返します。

  • ( BSON::Document ) —

    ドキュメント。

以来

  • 2.0.0



132
133
134
# ファイル 'lib/mongo/ コレクション/view/writeable.rb' は、132 行

デフォルト find_one_and_replace(replacement, ops = {})
  find_one_and_update(replacement, ops)
end

#find_one_and_update(document, opts = {}) ⇒ BSON::Document | nil

1 つのドキュメントを検索してアップデートします。

更新を適用する必要があります。

例:

ドキュメントを検索して更新し、元のドキュメントを返します。

view.find_one_and_update({ "$set" => { name: 'test' }}, :return_document => :before)

パラメーター:

  • ドキュメント ( BSON::Document ) —

    の更新。

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

    オプション。

  • options (ハッシュ) —

    カスタマイズ可能なオプションのセット

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

  • :max_time_ms (整数) —

    コマンドの実行を許可する最大時間(ミリ秒単位)。 このオプションは非推奨です。代わりに :timeout_ms を使用してください。

  • :プロジェクション (ハッシュ) —

    返されるドキュメントに含める、または除外するフィールド。

  • :sort (ハッシュ) —

    結果セットがソートされるキーと方向のペア。

  • :return_document (記号) —

    : 前 または : 後 。

  • :upsert ( true 、 false ) —

    ドキュメントが存在しない場合にアップサートを実行するかどうか。

  • :bypass_document_validation ( true 、 false ) —

    ドキュメント レベルの検証をスキップするかどうか。

  • :collation (ハッシュ) —

    使用する照合。

  • :array_filters (配列) —

    どの配列要素を指定するフィルターのセット

  • :session (セッション) —

    使用するセッション。

  • :hint (ハッシュ | string ) —

    この操作に使用するインデックス。ハッシュ(例:{ _id:1 } )または String(例:"ID").

  • :write_concern (ハッシュ) —

    書込み保証(write concern) オプション。 :w => 整数、 :fsync => ブール値、 :j => ブール値 になります。

  • :let (ハッシュ) —

    コマンドで使用する変数のマッピング。 詳細については、 サーバーのドキュメントを 参照してください。

  • :comment (オブジェクト) —

    このコマンドに添付するユーザー指定のコメント。

次の値を返します。

  • (BSON::Document | nil) —

    ドキュメントが見つからない場合は nil です。

以来

  • 2.0.0



174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
# ファイル 'lib/mongo/ コレクション/view/writeable.rb' は、174 行

デフォルト find_one_and_update(ドキュメント, ops = {})
  価値 = with_session(ops) 行う |セッション|
    write_concern = 場合 ops[:write_concern]
                      WriteConcern.得る(ops[:write_concern])
                    else
                      write_concern_with_session(セッション)
                    end

    クエリ キャッシュ.clear_namespace(コレクション.namespace)

    cmd = {
      findAndModify: コレクション.name,
      query: フィルター,
      arrayFilters: ops[:array_filters] || ops[' array_filters '],
      update: ドキュメント,
      フィールド: プロジェクション,
      sort: sort,
      new: !!(ops[:return_document] & & ops[:return_document] == : after),
      アップサート: ops[:upsert],
      maxTimeMS: max_time_ms,
      bypassDocumentValidation: ops[:bypass_document_validation],
      hint: ops[:hint],
      collation: ops[:collation] || ops[「照合」] || collation,
      let: ops[:let],
      comment: ops[:comment]
    }.compact

    context = 操作::Context.新着情報(
      クライアント: クライアント,
      セッション: セッション,
      operation_timeouts: operation_timeouts(ops)
    )
    操作 = 操作::WriteCommand.新着情報(
      セレクター: cmd,
      db_name: database.name,
      write_concern: write_concern,
      セッション: セッション
    )
    価値 = 追跡.track_operation(操作, context, op_name: 'findOneAndUpdate') 行う
      write_with_retry(write_concern, context: context) 行う |接続, txn_num, context|
        操作.txn_num = txn_num
        操作.execution_with_ connection(接続, context: context)
      end
    end.最初に&.fetch('value', nil)
    価値 ただし、 価値.nil? || 価値.空の場合
  end
end

# replace_one (置換, opts = {}) =結果

データベース内の単一のドキュメントを新しいドキュメントに置き換えます。

例:

単一のドキュメントを置き換えます。

collection_view.replace_one({ name: 'test' })

パラメーター:

  • replacement (ハッシュ) —

    置換ドキュメントです。

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

    オプション。

  • options (ハッシュ) —

    カスタマイズ可能なオプションのセット

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

  • :bypass_document_validation ( true 、 false ) —

    ドキュメント レベルの検証をスキップするかどうか。

  • :collation (ハッシュ) —

    使用する照合。

  • :comment (オブジェクト) —

    このコマンドに添付するユーザー指定のコメント。

  • :hint (ハッシュ | string ) —

    この操作に使用するインデックス。ハッシュ(例:{ _id:1 } )または String(例:"ID").

  • :let (ハッシュ) —

    コマンドで使用する変数のマッピング。 詳細については、 サーバーのドキュメントを 参照してください。

  • :session (セッション) —

    使用するセッション。

  • :write_concern (ハッシュ) —

    書込み保証(write concern) オプション。

  • :upsert ( true 、 false ) —

    ドキュメントが存在しない場合にアップサートを実行するかどうか。:w => 整数、 : fsync => ブール値、 :j => ブール値になります。

  • :sort (ハッシュ) —

    クエリが複数のドキュメントに一致する場合に、操作によって置き換えられるドキュメントを指定します。ソート順で一致した最初のドキュメントが置き換えられます。このオプションは >= 8.0 のサーバーでのみサポートされています。古いサーバーでは、このオプションを使用する際にエラーが報告されます。

次の値を返します。

  • (結果) —

    データベースからの応答。

以来

  • 2.0.0



384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
# ファイル 'lib/mongo/ コレクション/view/writeable.rb' は、384 行

デフォルト replace_one(replacement, ops = {})
  with_session(ops) 行う |セッション|
    write_concern = 場合 ops[:write_concern]
                      WriteConcern.得る(ops[:write_concern])
                    else
                      write_concern_with_session(セッション)
                    end
    validate_replacement_documents(replacement)

    クエリ キャッシュ.clear_namespace(コレクション.namespace)

    update_doc = {
      操作::q => フィルター,
      arrayFilters: ops[:array_filters] || ops[' array_filters '],
      操作::U => replacement,
      hint: ops[:hint],
      collation: ops[:collation] || ops[「照合」] || collation,
      sort: ops[:sort] || ops['sort'],
    }.compact
    update_doc['upsert'] = true 場合 ops[:upsert]

    context = 操作::Context.新着情報(
      クライアント: クライアント,
      セッション: セッション,
      operation_timeouts: operation_timeouts(ops)
    )
    write_with_retry(write_concern, context: context) 行う |接続, txn_num, context|
      操作::Update.新着情報(
        updates: [ update_doc ],
        db_name: コレクション.database.name,
        coll_name: コレクション.name,
        write_concern: write_concern,
        bypass_document_validation: !!ops[:bypass_document_validation],
        セッション: セッション,
        txn_num: txn_num,
        let: ops[:let],
        comment: ops[:comment]
      ).execution_with_ connection(接続, context: context)
    end
  end
end

# update_many (spec, opts = {}) =結果

コレクション内のドキュメントを更新します。

例:

コレクション内の複数のドキュメントを更新します。

collection_view.update_many('$set' => { name: 'test' })

パラメーター:

  • スペック (ハッシュ | 配列 <Hash> ) —

    更新ドキュメントまたはパイプライン。

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

    オプション。

  • options (ハッシュ) —

    カスタマイズ可能なオプションのセット

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

  • :array_filters (配列) —

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

  • :bypass_document_validation ( true 、 false ) —

    ドキュメント レベルの検証をスキップするかどうか。

  • :collation (ハッシュ) —

    使用する照合。

  • :comment (オブジェクト) —

    このコマンドに添付するユーザー指定のコメント。

  • :hint (ハッシュ | string ) —

    この操作に使用するインデックス。ハッシュ(例:{ _id:1 } )または String(例:"ID").

  • :let (ハッシュ) —

    コマンドで使用する変数のマッピング。 詳細については、 サーバーのドキュメントを 参照してください。

  • :session (セッション) —

    使用するセッション。

  • :upsert ( true 、 false ) —

    ドキュメントが存在しない場合にアップサートを実行するかどうか。

  • :write_concern (ハッシュ) —

    書込み保証(write concern) オプション。 :w => 整数、 :fsync => ブール値、 :j => ブール値 になります。

次の値を返します。

  • (結果) —

    データベースからの応答。

以来

  • 2.0.0



458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
# ファイル 'lib/mongo/ コレクション/view/writeable.rb' は、458 行

デフォルト update_many(スペック, ops = {})
  with_session(ops) 行う |セッション|
    write_concern = 場合 ops[:write_concern]
                      WriteConcern.得る(ops[:write_concern])
                    else
                      write_concern_with_session(セッション)
                    end
    validate_update_documents!(スペック)

    クエリ キャッシュ.clear_namespace(コレクション.namespace)

    update_doc = {
      操作::q => フィルター,
      arrayFilters: ops[:array_filters] || ops[' array_filters '],
      操作::U => スペック,
      操作::multi => true,
      hint: ops[:hint],
      collation: ops[:collation] || ops[「照合」] || collation,
    }.compact
    update_doc['upsert'] = true 場合 ops[:upsert]

    context = 操作::Context.新着情報(
      クライアント: クライアント,
      セッション: セッション,
      operation_timeouts: operation_timeouts(ops)
    )
    nro_write_with_retry(write_concern, context: context) 行う |接続, _txn_num, context|
      操作::Update.新着情報(
        updates: [ update_doc ],
        db_name: コレクション.database.name,
        coll_name: コレクション.name,
        write_concern: write_concern,
        bypass_document_validation: !!ops[:bypass_document_validation],
        セッション: セッション,
        let: ops[:let],
        comment: ops[:comment]
      ).execution_with_ connection(接続, context: context)
    end
  end
end

#update_one(spec, opts = {}) ⇒ Result

コレクション内の 1 つのドキュメントを更新します。

例:

コレクション内の 1 つのドキュメントを更新します。

collection_view.update_one('$set' => { name: 'test' })

パラメーター:

  • スペック (ハッシュ | 配列 <Hash> ) —

    更新ドキュメントまたはパイプライン。

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

    オプション。

  • options (ハッシュ) —

    カスタマイズ可能なオプションのセット

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

  • :array_filters (配列) —

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

  • :bypass_document_validation ( true 、 false ) —

    ドキュメント レベルの検証をスキップするかどうか。

  • :collation (ハッシュ) —

    使用する照合。

  • :comment (オブジェクト) —

    このコマンドに添付するユーザー指定のコメント。

  • :hint (ハッシュ | string ) —

    この操作に使用するインデックス。ハッシュ(例:{ _id:1 } )または String(例:"ID").

  • :let (ハッシュ) —

    コマンドで使用する変数のマッピング。 詳細については、 サーバーのドキュメントを 参照してください。

  • :session (セッション) —

    使用するセッション。

  • :upsert ( true 、 false ) —

    ドキュメントが存在しない場合にアップサートを実行するかどうか。

  • :write_concern (ハッシュ) —

    書込み保証(write concern) オプション。 :w => 整数、 :fsync => ブール値、 :j => ブール値 になります。

  • :sort (ハッシュ) —

    クエリが複数のドキュメントに一致する場合に、その操作で更新するドキュメントを指定します。ソート順で一致した最初のドキュメントが更新されます。このオプションは >= 8.0 のサーバーでのみサポートされています。古いサーバーでは、このオプションを使用する際にエラーが報告されます。

次の値を返します。

  • (結果) —

    データベースからの応答。

以来

  • 2.0.0



536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
# ファイル 'lib/mongo/ コレクション/view/writeable.rb' は、536 行

デフォルト update_one(スペック, ops = {})
  with_session(ops) 行う |セッション|
    write_concern = 場合 ops[:write_concern]
                      WriteConcern.得る(ops[:write_concern])
                    else
                      write_concern_with_session(セッション)
                    end
    validate_update_documents!(スペック)

    クエリ キャッシュ.clear_namespace(コレクション.namespace)

    update_doc = {
      操作::q => フィルター,
      arrayFilters: ops[:array_filters] || ops[' array_filters '],
      操作::U => スペック,
      hint: ops[:hint],
      collation: ops[:collation] || ops[「照合」] || collation,
      sort: ops[:sort] || ops['sort'],
    }.compact
    update_doc['upsert'] = true 場合 ops[:upsert]

    context = 操作::Context.新着情報(
      クライアント: クライアント,
      セッション: セッション,
      operation_timeouts: operation_timeouts(ops)
    )
    操作 = 操作::Update.新着情報(
      updates: [ update_doc ],
      db_name: コレクション.database.name,
      coll_name: コレクション.name,
      write_concern: write_concern,
      bypass_document_validation: !!ops[:bypass_document_validation],
      セッション: セッション,
      let: ops[:let],
      comment: ops[:comment]
    )
    追跡.track_operation(操作, context) 行う
      write_with_retry(write_concern, context: context) 行う |接続, txn_num, context|
        操作.txn_num = txn_num
        操作.execution_with_ connection(接続, context: context)
      end
    end
  end
end