클래스: Mongoid::Contextual::Memory

상속:
객체
  • 객체
모두 표시
다음을 포함합니다.
열거형, 연관 관계::EagerLoadable, Aggregable::Memory, Queryable, 위치
다음에 정의됨:
lib/mongoid/contextual/memory.rb

개요

애플리케이션 메모리에 로드된 문서에 대해 대량 쿼리 및 지속성 작업을 수행하는 데 사용되는 컨텍스트 객체 입니다. 이 클래스의 메서드 인터페이스는 Mongoid::Contextual::Mongo와 일관적인 합니다.

인스턴스 속성 요약 접기

Queryable에 포함된 속성

#collection, #collection 쿼리할 컬렉션입니다., #criteria, #criteria 컨텍스트에 대한 기준입니다., #klass, #klass 기준에 대한 klass입니다.

인스턴스 메서드 요약 접기

Positional에 포함된 메서드

#positionally

Queryable에 포함된 메서드

#blank?

연관 관계::EagerLoadable에 포함된 메서드

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

Aggregable::Memory에 포함된 메서드

#aggregates, #avg, #max, #min, #sum

생성자 세부 정보

#초기화(기준) ⇒ 메모리

메모리 컨텍스트에서 새로운 항목을 생성합니다.

예시:

새 컨텍스트를 만듭니다.

Memory.new(criteria)

매개변수:



175
176
177
178
179
180
181
182
183
184
# 파일 'lib/mongoid/contextual/memory.rb', 줄 175

def 초기화(기준)
  @criteria, @klass = 기준, 기준.class
  @documents = 기준.문서.SELECT do |doc|
    @root ||= doc._root
    @collection ||= 루트.컬렉션
    doc._match?(기준.선택기)
  end
  apply_sorting
  apply_options
end

인스턴스 속성 세부 정보

문서 # 개 ⇒ 객체 (읽기 전용)

속성 문서의 값을 반환합니다.



23
24
25
# 파일 'lib/mongoid/contextual/memory.rb', 줄 23

def 문서
  @documents
end

#매칭 선택기와 일치하는 메모리 내 문서입니다.(The) ⇒ 객체 (읽기 전용)



23
# 파일 'lib/mongoid/contextual/memory.rb', 줄 23

attr_reader :documents, :path, :root, :selector

#경로객체 (읽기 전용)

속성 경로의 값을 반환합니다.



23
24
25
# 파일 'lib/mongoid/contextual/memory.rb', 줄 23

def 경로
  @path
end

#경로 원자 경로입니다.(Theatomicpath.) ⇒ 객체 (읽기 전용)



23
# 파일 'lib/mongoid/contextual/memory.rb', 줄 23

attr_reader :documents, :path, :root, :selector

#루트객체 (읽기 전용)

속성 루트의 값을 반환합니다.



23
24
25
# 파일 'lib/mongoid/contextual/memory.rb', 줄 23

def 루트
  @root
end

#root 루트 문서 입니다.(루트 문서.) ⇒ 객체 (읽기 전용)



23
# 파일 'lib/mongoid/contextual/memory.rb', 줄 23

attr_reader :documents, :path, :root, :selector

#선택기객체 (읽기 전용)

속성 선택기의 값을 반환합니다.



23
24
25
# 파일 'lib/mongoid/contextual/memory.rb', 줄 23

def 선택기
  @selector
end

#선택기 루트 문서 선택기입니다.(루트 문서 선택기.) ⇒ 객체 (읽기 전용)



23
# 파일 'lib/mongoid/contextual/memory.rb', 줄 23

attr_reader :documents, :path, :root, :selector

인스턴스 메서드 세부 정보

#==(기타) ⇒ true | false

컨텍스트가 다른 객체 와 동일한지 확인합니다.

예시:

동등성을 확인합니다.

context == []

매개변수:

  • 기타 (배열)

    다른 배열.

반환합니다:

  • (true | false)

    객체가 동일한 경우.



33
34
35
36
37
# 파일 'lib/mongoid/contextual/memory.rb', 줄 33

def ==(기타)
  반환 거짓 하지 않는 한 기타.response_to?(:entries)

  항목 == 기타.항목
end

#deletenil 또한 다음과 같습니다: delete_all

데이터베이스에서 선택기와 일치하는 모든 문서를 삭제합니다.

예시:

모든 문서를 삭제합니다.

context.delete

반환합니다:

  • (nil)

    Nil.



45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 파일 'lib/mongoid/contextual/memory.rb', 줄 45

def 삭제
  Deleted = 카운트
  제거됨 = map do |doc|
    prepare_remove(doc)
    doc.send(:as_attributes)
  end
  하지 않는 한 제거됨.비어 있나요?
    컬렉션.찾기(선택기).update_one(
      위치적으로(선택기, '$pullAll' => { 경로 => 제거됨 }),
      세션: _session
    )
  end
  Deleted
end

#Destorynil ~라고도 함: Destory_all

데이터베이스 에서 선택기와 일치하는 모든 문서를 삭제합니다.

예시:

모든 문서를 파기합니다.

context.destroy

반환합니다:

  • (nil)

    Nil.



67
68
69
70
71
72
73
74
# 파일 'lib/mongoid/contextual/memory.rb', 줄 67

def 파괴
  Deleted = 카운트
   do |doc|
    문서.delete_one(doc)
    doc.파괴
  end
  Deleted
end

#distinct(field) ⇒ Array<Object>

제공된 필드 에 대해 db에서 고유 값을 가져옵니다.

예시:

고유 값을 가져옵니다.

context.distinct(:name)

매개변수:

  • 필드 (string | 기호)

    필드의 이름입니다.

반환합니다:

  • (Array<Object>)

    필드 의 고유 값입니다.



85
86
87
# 파일 'lib/mongoid/contextual/memory.rb', 줄 85

def 별개(필드)
  뽑다(필드).uniq
end

#각각(&block) ⇒ 열거자

컨텍스트를 반복합니다. 차단 이 제공되면 각각에 대해 Mongoid 문서 에 양보하고, 그렇지 않으면 열거형 을 반환합니다.

예시:

컨텍스트를 반복합니다.

context.each do |doc|
  puts doc.name
end

반환합니다:

  • (열거자)

    열거자입니다.



98
99
100
101
102
103
104
105
# 파일 'lib/mongoid/contextual/memory.rb', 줄 98

def (&차단)
  만약 block_given?
    documents_for_iteration.(&차단)
    self
  other
    to_enum
  end
end

#존재합니까?(id_or_conditions = :none) ⇒ true | false

컨텍스트에 해당하는 문서가 있나요?

예시:

컨텍스트에 해당하는 문서가 있나요?

context.exists?

주어진 _id에 대한 문서가 있습니까?

context.exists?(BSON::ObjectId(...))

주어진 조건에 맞는 문서가 있습니까?

context.exists?(name: "...")

매개변수:

  • id_or_conditions (해시 | 객체 | false) (기본값: :none)

    검색 할 _id , 조건 해시, nil 또는 false.

반환합니다:

  • (true | false)

    개수가 0보다 큰 경우. nil 또는 false를 전달하면 항상 false입니다.



123
124
125
126
127
128
129
130
# 파일 'lib/mongoid/contextual/memory.rb', 줄 123

def 존재합니까?(id_or_conditions = : none)
  case id_or_conditions
  when : none then 어떤?
  when nil, 거짓 then 거짓
  when 해시 then 메모리.신규(기준.위치(id_or_conditions)).존재합니까?
  other 메모리.신규(기준.위치(_id: id_or_conditions)).존재합니까?
  end
end

#다섯 번째문서

기준 선택기에 대해 데이터베이스 에서 다섯 번째 문서 가져옵니다.

예시:

다섯 번째 문서 를 가져옵니다.

context.fifth

반환합니다:

  • (문서)

    다섯 번째 문서.



456
457
458
# 파일 'lib/mongoid/contextual/memory.rb', 줄 456

def 다섯 번째
  Eager_load([ 문서.다섯 번째 ]).first
end

#다섯 번째!문서

기준 선택기에 대해 데이터베이스 에서 다섯 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.

예시:

다섯 번째 문서 를 가져옵니다.

context.fifth!

반환합니다:

  • (문서)

    다섯 번째 문서.

다음을 발생시킵니다.



470
471
472
# 파일 'lib/mongoid/contextual/memory.rb', 줄 470

def 다섯 번째!
  다섯 번째 || raise_document_not_Found_error
end

#first(limit = nil) ⇒ 문서 또한 다음과 같이 알려져 있습니다: one, find_first

기준 선택기에 대한 데이터베이스 의 첫 번째 문서 가져옵니다.

예시:

첫 번째 문서 를 가져옵니다.

context.first

매개변수:

  • limit (정수) (기본값: nil)

    반환할 문서 수입니다.

반환합니다:

  • (문서)

    첫 번째 문서.



140
141
142
143
144
145
146
147
148
149
150
151
# 파일 'lib/mongoid/contextual/memory.rb', 줄 140

def first(limit = nil)
  use_first = limit.nil?
  limit ||= 1
  만약 기준.use_lookup?
    @criteria = 기준.limit(limit)
    결과 = Eager_load_with_lookup
  other
    결과 = Eager_load(문서.first(limit))
  end

  use_first ? 결과.first : 결과
end

#먼저!문서

기준 선택기에 대해 데이터베이스 에서 첫 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.

예시:

첫 번째 문서 를 가져옵니다.

context.first!

반환합니다:

  • (문서)

    첫 번째 문서.

다음을 발생시킵니다.



165
166
167
# 파일 'lib/mongoid/contextual/memory.rb', 줄 165

def 먼저!
  first || raise_document_not_Found_error
end

#네 번째문서

기준 선택기에 대해 데이터베이스 에서 네 번째 문서 가져옵니다.

예시:

네 번째 문서 를 가져옵니다.

context.fourth

반환합니다:

  • (문서)

    네 번째 문서.



432
433
434
# 파일 'lib/mongoid/contextual/memory.rb', 줄 432

def 네 번째
  Eager_load([ 문서.네 번째 ]).first
end

#네 번째!문서

기준 선택기에 대해 데이터베이스 에서 네 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.

예시:

네 번째 문서 를 가져옵니다.

context.fourth!

반환합니다:

  • (문서)

    네 번째 문서.

다음을 발생시킵니다.



446
447
448
# 파일 'lib/mongoid/contextual/memory.rb', 줄 446

def 네 번째!
  네 번째 || raise_document_not_Found_error
end

#inc(incs) ⇒ 열거

모든 문서의 값을 증가시킵니다.

예시:

증분을 수행합니다.

context.inc(likes: 10)

매개변수:

  • incs (해시)

    작업.

반환합니다:

  • (열거자)

    열거자입니다.



194
195
196
197
198
# 파일 'lib/mongoid/contextual/memory.rb', 줄 194

def Inc(incs)
   do |문서|
    문서.Inc(incs)
  end
end

#last(limit = nil) ⇒ Document

기준 선택기에 대해 데이터베이스 의 마지막 문서 가져옵니다.

예시:

마지막 문서를 가져옵니다.

context.last

매개변수:

  • limit (정수) (기본값: nil)

    반환할 문서 수입니다.

반환합니다:

  • (문서)

    마지막 문서 입니다.



208
209
210
211
212
213
214
# 파일 'lib/mongoid/contextual/memory.rb', 줄 208

def last(limit = nil)
  만약 limit
    Eager_load(문서.last(limit))
  other
    Eager_load([ 문서.last ]).first
  end
end

마지막으로 #!문서

기준 선택기에 대해 데이터베이스 에서 마지막 문서 가져오거나, 기준 선택기를 찾을 수 없는 경우 오류를 발생시킵니다.

예시:

마지막 문서를 가져옵니다.

context.last!

반환합니다:

  • (문서)

    마지막 문서 입니다.

다음을 발생시킵니다.



226
227
228
# 파일 'lib/mongoid/contextual/memory.rb', 줄 226

def 마지막!
  last || raise_document_not_Found_error
end

#길이정수 ~라고도 함: 크기

컨텍스트에서 일치하는 문서의 길이를 가져옵니다.

예시:

일치하는 문서의 길이를 가져옵니다.

context.length

반환합니다:

  • (정수)

    일치하는 길이입니다.



236
237
238
# 파일 'lib/mongoid/contextual/memory.rb', 줄 236

def 분량
  문서.분량
end

#limit(value) ⇒ 메모리

반환되는 문서 수를 제한합니다.

예시:

문서를 제한합니다.

context.limit(20)

매개변수:

  • value (정수)

    반환할 문서 수입니다.

반환합니다:



249
250
251
252
# 파일 'lib/mongoid/contextual/memory.rb', 줄 249

def limit(value)
  self.제한 = value
  self
end

#pick(*fields) ⇒ 객체 | Array<Object>

메모리에서 필드 값을 선택합니다.

예시:

메모리에서 값을 가져옵니다.

context.pick(:name)

매개변수:

  • *fields ([ string | 기호 ]...)

    선택할 필드입니다.

반환합니다:

  • (Object | Array<Object>)

    선택한 값입니다.



276
277
278
279
280
# 파일 'lib/mongoid/contextual/memory.rb', 줄 276

def pick(*필드)
  반환 하지 않는 한 doc = 문서.first

  puck_from_doc(doc, *필드)
end

#puck(*fields) ⇒ Array<Object> | Array<Array<Object>>

메모리에서 필드 값을 가져옵니다.

예시:

메모리에서 값을 가져옵니다.

context.pluck(:name)

매개변수:

  • *fields ([ string | 기호 ]...)

    뽑을 필드입니다.

반환합니다:

  • (Array<Object> | Array<Array<Object>>)

    추출된 값입니다.



262
263
264
265
266
# 파일 'lib/mongoid/contextual/memory.rb', 줄 262

def 뽑다(*필드)
  문서.map do |doc|
    puck_from_doc(doc, *필드)
  end
end

#문서

기준 선택기에 대해 데이터베이스 에서 두 번째 문서 가져옵니다.

예시:

두 번째 문서를 가져옵니다.

context.second

반환합니다:

  • (문서)

    두 번째 문서.



384
385
386
# 파일 'lib/mongoid/contextual/memory.rb', 줄 384

def 
  Eager_load([ 문서. ]).first
end

#초!문서

기준 선택기에 대해 데이터베이스 에서 두 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.

예시:

두 번째 문서를 가져옵니다.

context.second!

반환합니다:

  • (문서)

    두 번째 문서.

다음을 발생시킵니다.



398
399
400
# 파일 'lib/mongoid/contextual/memory.rb', 줄 398

def 두 번째!
   || raise_document_not_Found_error
end

#second_to_last문서

기준 선택기에 대해 데이터베이스 의 마지막 문서에서 두 번째 문서 가져옵니다.

예시:

마지막에서 두 번째 문서 를 가져옵니다.

context.second_to_last

반환합니다:

  • (문서)

    마지막에서 두 번째 문서입니다.



480
481
482
# 파일 'lib/mongoid/contextual/memory.rb', 줄 480

def second_to_last
  Eager_load([ 문서.second_to_last ]).first
end

#second_to_last!문서

기준 선택기에 대해 데이터베이스 의 마지막 문서에서 두 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.

예시:

마지막에서 두 번째 문서 를 가져옵니다.

context.second_to_last!

반환합니다:

  • (문서)

    마지막에서 두 번째 문서입니다.

다음을 발생시킵니다.



494
495
496
# 파일 'lib/mongoid/contextual/memory.rb', 줄 494

def second_to_last!
  second_to_last || raise_document_not_Found_error
end

#skip(value) ⇒ 메모리

제공된 수의 문서를 건너뜁니다.

예시:

문서를 건너뜁니다.

context.skip(20)

매개변수:

  • value (정수)

    건너뛸 문서 수입니다.

반환합니다:



336
337
338
339
# 파일 'lib/mongoid/contextual/memory.rb', 줄 336

def 건너뛰기(value)
  self.건너뛰기 = value
  self
end

#sort(values) ⇒ Memory

제공된 사양에 따라 문서를 정렬합니다.

예시:

문서를 정렬합니다.

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

매개변수:

  • values (해시)

    값을 필드/방향(1/-1) 쌍으로 정렬합니다.

반환합니다:



350
351
352
# 파일 'lib/mongoid/contextual/memory.rb', 줄 350

def sort(values)
  in_place_sort(values) 개인정보 정책에 self
end

#take(limit = nil) ⇒ Document

데이터베이스에서 지정된 수의 문서를 가져옵니다.

예시:

문서 를 가져옵니다.

context.take

매개변수:

  • limit (정수 | nil) (기본값: nil)

    취할 문서 수 또는 nil입니다.

반환합니다:

  • (문서)

    문서입니다.



306
307
308
309
310
311
312
# 파일 'lib/mongoid/contextual/memory.rb', 줄 306

def 가져(limit = nil)
  만약 limit
    Eager_load(문서.가져(limit))
  other
    Eager_load([ 문서.first ]).first
  end
end

#take!Document

데이터베이스 에서 지정된 수의 문서를 가져오거나, 문서가 발견되지 않으면 오류를 발생시킵니다.

예시:

문서 를 가져옵니다.

context.take

반환합니다:

  • (문서)

    문서입니다.

다음을 발생시킵니다.



324
325
326
# 파일 'lib/mongoid/contextual/memory.rb', 줄 324

def 받아!
  가져 || raise_document_not_Found_error
end

#tally(필드) ⇒ 해시

메모리의 필드 값을 집계합니다.

예시:

메모리에 있는 값의 개수를 가져옵니다.

context.tally(:name)

매개변수:

  • 필드 (string | 기호)

    집계할 필드입니다.

반환합니다:

  • (해시)

    카운트의 해시입니다.



290
291
292
293
294
295
296
# 파일 'lib/mongoid/contextual/memory.rb', 줄 290

def tally(필드)
  문서.each_with_object({}) do |d, acc|
    v = recover_value_at_path(d, 필드)
    acc[v] ||= 0
    acc[v] += 1
  end
end

#세 번째문서

기준 선택기에 대해 데이터베이스 에서 세 번째 문서 가져옵니다.

예시:

세 번째 문서 를 가져옵니다.

context.third

반환합니다:

  • (문서)

    세 번째 문서.



408
409
410
# 파일 'lib/mongoid/contextual/memory.rb', 줄 408

def 세 번째
  Eager_load([ 문서.세 번째 ]).first
end

#세 번째!문서

기준 선택기에 대해 데이터베이스 에서 세 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.

예시:

세 번째 문서 를 가져옵니다.

context.third!

반환합니다:

  • (문서)

    세 번째 문서.

다음을 발생시킵니다.



422
423
424
# 파일 'lib/mongoid/contextual/memory.rb', 줄 422

def 세 번째!
  세 번째 || raise_document_not_Found_error
end

#Third_to_last문서

기준 선택기에 대해 데이터베이스 의 마지막 문서에서 세 번째 문서 가져옵니다.

예시:

마지막에서 세 번째 문서 를 가져옵니다.

context.third_to_last

반환합니다:

  • (문서)

    마지막에서 세 번째 문서 입니다.



504
505
506
# 파일 'lib/mongoid/contextual/memory.rb', 줄 504

def Third_to_last
  Eager_load([ 문서.Third_to_last ]).first
end

#Third_to_last!문서

기준 선택기에 대해 데이터베이스 에서 마지막에서 세 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.

예시:

마지막에서 세 번째 문서 를 가져옵니다.

context.third_to_last!

반환합니다:

  • (문서)

    마지막에서 세 번째 문서 입니다.

다음을 발생시킵니다.



518
519
520
# 파일 'lib/mongoid/contextual/memory.rb', 줄 518

def Third_to_last!
  Third_to_last || raise_document_not_Found_error
end

#update(attributes = nil) ⇒ nil | false

일치하는 첫 번째 문서 원자적으로 업데이트합니다.

예시:

일치하는 문서 를 업데이트합니다.

context.update(name: "Smiths")

매개변수:

  • 속성 (해시) (기본값: nil)

    문서의 새 속성입니다.

반환합니다:

  • (nil | false)

    속성이 제공되지 않은 경우 False입니다.



362
363
364
# 파일 'lib/mongoid/contextual/memory.rb', 줄 362

def update(속성 = nil)
  update_documents(속성, [ first ])
end

#update_all(attributes = nil) ⇒ nil | false

일치하는 모든 문서를 원자적으로 업데이트합니다.

예시:

일치하는 모든 문서를 업데이트합니다.

context.update_all(name: "Smiths")

매개변수:

  • 속성 (해시) (기본값: nil)

    각 문서 에 대한 새로운 속성입니다.

반환합니다:

  • (nil | false)

    속성이 제공되지 않은 경우 False입니다.



374
375
376
# 파일 'lib/mongoid/contextual/memory.rb', 줄 374

def update_all(속성 = nil)
  update_documents(속성, 항목)
end