モジュール: Mongoid::Peristable::Upserable

次のドキュメントに含まれます。
Mongoid::Persistable
定義:
lib/mongoid/persistable/upsertable.rb

Overview

ドキュメントをアップサートする永続化操作の動作を定義します。

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

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

# upsert (オプション = {}) = true

ドキュメントのアップサートを実行します。 ドキュメントがデータベースに存在しない場合、 mongoは新しいドキュメントを挿入します。そうでない場合、既存のドキュメントのフィールドは新しい値で上書きされます。

replace オプションが true の場合、指定されていない属性は削除され、false の場合は指定されていない属性が維持されます。 Mongoid 9では、置換オプションはデフォルトで false に設定されています。

例:

ドキュメントをアップサートします。

document.upsert

置換を使用してドキュメントをアップサートします。

document.upsert(replace: true)

挿入時に使用する追加の属性を使用してアップサートを実行します。

document.upsert(set_on_insert: { created_at: DateTime.now })

パラメーター:

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

    検証オプション。

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

  • :validate true | false

    検証するかどうか。

  • :replace true | false

    アップサート時にドキュメントを置き換えるかどうか。

  • :set_on_insert ハッシュ

    ドキュメントがまだ存在しない場合に含める属性。

次の値を返します。

  • ( true )

    True。



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# ファイル 'lib/mongoid/永続的/upsertable.rb' 行36

デフォルト upsert(options = {})
  prepare_upsert(options) 行う
    場合 options[:replace]
      場合 options[:set_on_insert]
        発生 ArgumentError, " :set_on_insert を `replace: true` とともに指定できませ
      end

      コレクション.find(アトミック_セレクター).replace_one(
        as_attributes, アップサート: true, セッション: _session)
    else
      attrs = { " $set " => as_attributes }
      attrs["$setOnInsert"] = options[:set_on_insert] 場合 options[:set_on_insert]

      コレクション.find(アトミック_セレクター).update_one(
        attrs, アップサート: true, セッション: _session)
    end
  end
end