모듈: Mongoid::Persistable::Upsertable

포함 항목:
Mongoid::Persistable
다음에 정의됨:
lib/mongoid/persistable/upsertable.rb

개요

문서를 업서트 하는 지속성 작업의 동작을 정의합니다.

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#업서트(options = {}) ⇒ true

문서 의 업서트 를 수행합니다. 문서 가 데이터베이스 에 존재하지 않으면 mongo 는 새 문서를 삽입하고, 그렇지 않으면 필드를 기존 문서 의 새 값으로 덮어씁니다.

대체 옵션이 true이면 지정되지 않은 속성이 삭제되고 false이면 지정되지 않은 속성이 유지됩니다. Mongoid 9 에서 대체 옵션의 기본값은 false 입니다.

예시:

문서 를 업로드합니다.

document.upsert

replace를 사용하여 문서 를 업서트합니다.

document.upsert(replace: true)

삽입할 때 사용할 예비 속성이 포함된 업서트입니다.

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

매개변수:

  • 옵션 (해시) (기본값: {})

    유효성 검사 옵션.

옵션 해시(options):

  • :validate (true | false)

    유효성 검사 여부입니다.

  • :replace (true | false)

    업서트 시 문서 를 바꿀지 여부입니다.

  • :set_on_insert (해시)

    문서 가 아직 존재하지 않는 경우 포함할 속성입니다.

반환합니다:

  • (true)

    참.



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# 파일 'lib/mongoid/persistable/upsertable.rb', 줄 36

def 업서트(옵션 = {})
  prepare_upsert(옵션) do
    만약 옵션[:replace]
      만약 옵션[:set_on_insert]
        올리다 ArgumentError, ":set_on_insert를 `replace: true`로 지정할 수 없습니다."
      end

      컬렉션.찾기(atomic_selector).replace_one(
        as_attributes, upsert: true, 세션: _session)
    other
      attrs = { "$set" => as_attributes }
      attrs["$setOnInsert"] = 옵션[:set_on_insert] 만약 옵션[:set_on_insert]

      컬렉션.찾기(atomic_selector).update_one(
        attrs, upsert: true, 세션: _session)
    end
  end
end