클래스: Mongoid::Atomic::Modifiers

상속:
해시
  • 객체
모두 표시
다음에 정의됨:
lib/mongoid/atomic/modifiers.rb

개요

이 클래스에는 데이터베이스 에 대한 원자 조작을 지원하기 위한 로직이 포함되어 있습니다.

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#add_to_set(modifications) ⇒ 객체

해시에 원자적 $addToSet 수정자를 추가합니다.

예시:

Add the $addToSet modifiers.

modifiers.add_to_set({ "preference_ids" => [ "one" ] })

매개변수:

  • 수정 (해시)

    세트에 추가하기 수정자입니다.



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/mongoid/atomic/modifiers.rb', line 14

def add_to_set(수정)
  수정.각각의 쌍 do |필드, value|
    만약 add_to_sets.has_key?(필드)
      value. do |val|
        add_to_sets[필드]['$each'].push(val)
      end
    other
      add_to_sets[필드] = { '$each' => value }
    end
  end
end

#pull(modifications) ⇒ 객체

수정자 해시에 모든 수정자 풀을 추가합니다.

예시:

모든 작업 가져오기를 추가합니다.

modifiers.pull({ "addresses" => { "_id" => { "$in" => [ 1, 2, 3 ]}}})

매개변수:

  • 수정 (해시)

    모든 수정자를 가져옵니다.



45
46
47
48
49
50
# File 'lib/mongoid/atomic/modifiers.rb', line 45

def pull(수정)
  수정.각각의 쌍 do |필드, value|
    pulls[필드] = value
    pull_fields[필드.split('.', 2)[0]] = 필드
  end
end

#pull_all(modifications) ⇒ 객체

수정자 해시에 모든 수정자 풀을 추가합니다.

예시:

모든 작업 가져오기를 추가합니다.

modifiers.pull_all({ "addresses" => { "street" => "Bond" }})

매개변수:

  • 수정 (해시)

    모든 수정자를 가져옵니다.



32
33
34
35
36
37
# File 'lib/mongoid/atomic/modifiers.rb', line 32

def pull_all(수정)
  수정.각각의 쌍 do |필드, value|
    add_operation(pull_alls, 필드, value)
    pull_fields[필드.split('.', 2)[0]] = 필드
  end
end

#push(modifications) ⇒ 객체

수정자 해시에 푸시 수정자를 추가합니다.

예시:

푸시 작업을 추가합니다.

modifiers.push({ "addresses" => { "street" => "Bond" }})

매개변수:

  • 수정 (해시)

    The push modifiers.



58
59
60
61
62
63
64
# File 'lib/mongoid/atomic/modifiers.rb', line 58

def push(수정)
  수정.각각의 쌍 do |필드, value|
    push_fields[필드] = 필드
    mods = push_conflict?(필드) ? conflicting_push : 푸시
    add_operation(mods, 필드, { '$each' => 배열.(value) })
  end
end

#set(modifications) ⇒ 객체

수정자 해시에 세트 연산을 추가합니다.

예시:

설정하다 연산을 추가합니다.

modifiers.set({ "title" => "sir" })

매개변수:

  • 수정 (해시)

    The set modifiers.



72
73
74
75
76
77
78
79
80
# File 'lib/mongoid/atomic/modifiers.rb', line 72

def 세트(수정)
  수정.각각의 쌍 do |필드, value|
    다음 만약 필드 == '_id'

    mods = set_conflict?(필드) ? conflicting_sets : 집합 (Sets)
    add_operation(mods, 필드, value)
    set_fields[필드.split('.', 2)[0]] = 필드
  end
end

#unset(modifications) ⇒ 객체

수정자 해시에 설정되지 않은 연산을 추가합니다.

예시:

설정되지 않은 작업을 추가합니다.

modifiers.unset([ "addresses" ])

매개변수:

  • 수정 (Array<String>)

    설정되지 않은 연결 이름입니다.



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# File 'lib/mongoid/atomic/modifiers.rb', line 88

def Unset(수정)
  수정. do |필드|
    필드 = 필드.to_s

    만약 unset_conflict?(필드)
      # 충돌하는 $ 설정하다 가 상위 필드 전체를
      # 하위 경로), 이미 완료된 전체 현재 상태 씁니다.
      # 이 미설정을 반영합니다. $unset 건너뛰기 — 중복됩니다.
      다음 만약 unset_superseded_by_set?(필드)

      conflicting_unsets.update(필드 => true)
    other
      Unsets.update(필드 => true)
    end
  end
end