클래스: 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에 포함된 메서드

#eager_load, #eager_loadable?, #preload

Aggregable::Memory에 포함된 메서드

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

생성자 세부 정보

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

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

예시:

새 컨텍스트를 만듭니다.

Memory.new(criteria)

매개변수:



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

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

인스턴스 속성 세부 정보

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

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



25
26
27
# 파일 'lib/mongoid/contextual/memory.rb', 줄 25

def 문서
  @documents
end

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



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

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

#경로객체 (읽기 전용)

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



25
26
27
# 파일 'lib/mongoid/contextual/memory.rb', 줄 25

def 경로
  @path
end

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



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

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

#루트객체 (읽기 전용)

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



25
26
27
# 파일 'lib/mongoid/contextual/memory.rb', 줄 25

def 루트
  @root
end

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



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

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

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

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



25
26
27
# 파일 'lib/mongoid/contextual/memory.rb', 줄 25

def 선택기
  @selector
end

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



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

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

인스턴스 메서드 세부 정보

#==(기타) ⇒ true | false

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

예시:

동등성을 확인합니다.

context == []

매개변수:

  • 기타 (배열)

    다른 배열.

반환합니다:

  • (true | false)

    객체가 동일한 경우.



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

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

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

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

예시:

모든 문서를 삭제합니다.

context.delete

반환합니다:

  • (nil)

    Nil.



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

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.



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

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

#distinct(field) ⇒ Array<Object>

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

예시:

고유 값을 가져옵니다.

context.distinct(:name)

매개변수:

  • 필드 (string | 기호)

    필드의 이름입니다.

반환합니다:

  • (Array<Object>)

    필드 의 고유 값입니다.



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

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

#각각열거자

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

예시:

컨텍스트를 반복합니다.

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

반환합니다:

  • (열거자)

    열거자입니다.



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

def 
  만약 block_given?
    documents_for_iteration. do |doc|
      yield(doc)
    end
    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입니다.



126
127
128
129
130
131
132
133
# 파일 'lib/mongoid/contextual/memory.rb', 줄 126

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

반환합니다:

  • (문서)

    다섯 번째 문서.



454
455
456
# 파일 'lib/mongoid/contextual/memory.rb', 줄 454

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

#다섯 번째!문서

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

예시:

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

context.fifth!

반환합니다:

  • (문서)

    다섯 번째 문서.

다음을 발생시킵니다.



468
469
470
# 파일 'lib/mongoid/contextual/memory.rb', 줄 468

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

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

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

예시:

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

context.first

매개변수:

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

    반환할 문서 수입니다.

반환합니다:

  • (문서)

    첫 번째 문서.



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

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

#먼저!문서

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

예시:

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

context.first!

반환합니다:

  • (문서)

    첫 번째 문서.

다음을 발생시킵니다.



163
164
165
# 파일 'lib/mongoid/contextual/memory.rb', 줄 163

def 먼저!
  first || raise_document_not_Found_error
end

#네 번째문서

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

예시:

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

context.fourth

반환합니다:

  • (문서)

    네 번째 문서.



430
431
432
# 파일 'lib/mongoid/contextual/memory.rb', 줄 430

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

#네 번째!문서

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

예시:

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

context.fourth!

반환합니다:

  • (문서)

    네 번째 문서.

다음을 발생시킵니다.



444
445
446
# 파일 'lib/mongoid/contextual/memory.rb', 줄 444

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

#inc(incs) ⇒ 열거

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

예시:

증분을 수행합니다.

context.inc(likes: 10)

매개변수:

  • incs (해시)

    작업.

반환합니다:

  • (열거자)

    열거자입니다.



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

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

#last(limit = nil) ⇒ Document

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

예시:

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

context.last

매개변수:

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

    반환할 문서 수입니다.

반환합니다:

  • (문서)

    마지막 문서 입니다.



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

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

마지막으로 #!문서

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

예시:

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

context.last!

반환합니다:

  • (문서)

    마지막 문서 입니다.

다음을 발생시킵니다.



224
225
226
# 파일 'lib/mongoid/contextual/memory.rb', 줄 224

def 마지막!
  last || raise_document_not_Found_error
end

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

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

예시:

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

context.length

반환합니다:

  • (정수)

    일치하는 길이입니다.



234
235
236
# 파일 'lib/mongoid/contextual/memory.rb', 줄 234

def 분량
  문서.분량
end

#limit(value) ⇒ 메모리

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

예시:

문서를 제한합니다.

context.limit(20)

매개변수:

  • value (정수)

    반환할 문서 수입니다.

반환합니다:



247
248
249
250
# 파일 'lib/mongoid/contextual/memory.rb', 줄 247

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

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

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

예시:

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

context.pick(:name)

매개변수:

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

    선택할 필드입니다.

반환합니다:

  • (Object | Array<Object>)

    선택한 값입니다.



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

def pick(*필드)
  만약 doc = 문서.first
    puck_from_doc(doc, *필드)
  end
end

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

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

예시:

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

context.pluck(:name)

매개변수:

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

    뽑을 필드입니다.

반환합니다:

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

    추출된 값입니다.



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

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

#문서

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

예시:

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

context.second

반환합니다:

  • (문서)

    두 번째 문서.



382
383
384
# 파일 'lib/mongoid/contextual/memory.rb', 줄 382

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

#초!문서

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

예시:

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

context.second!

반환합니다:

  • (문서)

    두 번째 문서.

다음을 발생시킵니다.



396
397
398
# 파일 'lib/mongoid/contextual/memory.rb', 줄 396

def 두 번째!
   || raise_document_not_Found_error
end

#second_to_last문서

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

예시:

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

context.second_to_last

반환합니다:

  • (문서)

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



478
479
480
# 파일 'lib/mongoid/contextual/memory.rb', 줄 478

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

#second_to_last!문서

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

예시:

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

context.second_to_last!

반환합니다:

  • (문서)

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

다음을 발생시킵니다.



492
493
494
# 파일 'lib/mongoid/contextual/memory.rb', 줄 492

def second_to_last!
  second_to_last || raise_document_not_Found_error
end

#skip(value) ⇒ 메모리

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

예시:

문서를 건너뜁니다.

context.skip(20)

매개변수:

  • value (정수)

    건너뛸 문서 수입니다.

반환합니다:



334
335
336
337
# 파일 'lib/mongoid/contextual/memory.rb', 줄 334

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

#sort(values) ⇒ Memory

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

예시:

문서를 정렬합니다.

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

매개변수:

  • values (해시)

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

반환합니다:



348
349
350
# 파일 'lib/mongoid/contextual/memory.rb', 줄 348

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

#take(limit = nil) ⇒ Document

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

예시:

문서 를 가져옵니다.

context.take

매개변수:

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

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

반환합니다:

  • (문서)

    문서입니다.



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

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

#take!Document

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

예시:

문서 를 가져옵니다.

context.take

반환합니다:

  • (문서)

    문서입니다.

다음을 발생시킵니다.



322
323
324
# 파일 'lib/mongoid/contextual/memory.rb', 줄 322

def 받아!
  가져 || raise_document_not_Found_error
end

#tally(필드) ⇒ 해시

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

예시:

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

context.tally(:name)

매개변수:

  • 필드 (string | 기호)

    집계할 필드입니다.

반환합니다:

  • (해시)

    카운트의 해시입니다.



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

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

#세 번째문서

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

예시:

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

context.third

반환합니다:

  • (문서)

    세 번째 문서.



406
407
408
# 파일 'lib/mongoid/contextual/memory.rb', 줄 406

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

#세 번째!문서

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

예시:

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

context.third!

반환합니다:

  • (문서)

    세 번째 문서.

다음을 발생시킵니다.



420
421
422
# 파일 'lib/mongoid/contextual/memory.rb', 줄 420

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

#Third_to_last문서

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

예시:

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

context.third_to_last

반환합니다:

  • (문서)

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



502
503
504
# 파일 'lib/mongoid/contextual/memory.rb', 줄 502

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

#Third_to_last!문서

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

예시:

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

context.third_to_last!

반환합니다:

  • (문서)

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

다음을 발생시킵니다.



516
517
518
# 파일 'lib/mongoid/contextual/memory.rb', 줄 516

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입니다.



360
361
362
# 파일 'lib/mongoid/contextual/memory.rb', 줄 360

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

#update_all(attributes = nil) ⇒ nil | false

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

예시:

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

context.update_all(name: "Smiths")

매개변수:

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

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

반환합니다:

  • (nil | false)

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



372
373
374
# 파일 'lib/mongoid/contextual/memory.rb', 줄 372

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