클래스: Mongoid::Contextual::Mongo

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음을 포함합니다.
열거 가능, 연관 관계::EagerLoadable, Atomic, Aggregable::Mongo, Queryable
다음에 정의됨:
lib/mongoid/contextual/mongo.rb,
lib/mongoid/contextual/mongo/documents_loader.rb

개요

데이터베이스 에 지속되지만 애플리케이션 메모리에 로드되지 않은 문서에 대해 대량 쿼리 및 지속성 작업을 수행하는 데 사용되는 컨텍스트 객체 입니다.

네임스페이스 아래에 정의됨

클래스: DocumentsLoader

상수 요약 접기

OPTIONS =

옵션 상수입니다.

[ :hint,
  :limit,
  :skip,
  :sort,
  :batch_size,
  :max_scan,
  :max_time_ms,
  : 스냅샷,
  :comment,
  :read,
  :cursor_type,
  :collation
].동결

Atomic에 포함된 상수

Atomic::UPDATES

인스턴스 속성 요약 접기

Queryable에 포함된 속성

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

인스턴스 메서드 요약 접기

Queryable에 포함된 메서드

#blank?

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

#eager_load, #eager_loadable?, #preload

Atomic에 포함된 메서드

#add_atomic_pull, #add_atomic_unset, #atomic_array_add_to_sets, #atomic_array_pulls, #atomic_array_pushes, #atomic_attribute_name, #atomic_delete_modifier, #atomic_insert_modifier, #atomic_path, #atomic_paths, #atomic_position, #atomic_pulls, #atomic_pushes , #atomic_sets, #atomic_unsets , #atomic_updates, #delayed_atomic_pulls(예:

Aggregable::Mongo에 포함된 메서드

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

생성자 세부 정보

#initialize(기준) ⇒ mongo

새 mongo 컨텍스트를 만듭니다. 이렇게 하면 기본 드라이버에 작업이 위임됩니다.

예시:

새 컨텍스트를 만듭니다.

Mongo.new(criteria)

매개변수:



270
271
272
273
274
275
276
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 270

def 초기화(기준)
  @criteria, @klass = 기준, 기준.class
  @collection = @klass.컬렉션
  기준.send(:merge_type_selection)
  @view = 컬렉션.찾기(기준.선택기, 세션: _session)
  apply_options
end

인스턴스 속성 세부 정보

#documents_loader객체 (읽기 전용)

Documents_loader 속성의 값을 반환합니다.



54
55
56
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 54

def Documents_loader
  @documents_loader
end

#보기해시 (읽기 전용)

기준에 대해 설명을 실행합니다.

예시:

기준을 설명합니다.

Band.where(name: "Depeche Mode").explain

매개변수:

  • 옵션 (해시)

    사용자 지정 가능한 옵션(Mongo::Collection::View::Explainable 참조)

반환합니다:

  • (해시)

    결과를 설명합니다.



42
43
44
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 42

def 보기
  @view
end

#view mongo 컬렉션 뷰입니다.(TheMongocollectionview.) ⇒ 객체 (읽기 전용)



42
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 42

attr_reader :view

인스턴스 메서드 세부 정보

#count(options = {}, &block) ⇒ 정수

쿼리 와 일치하는 문서 수를 가져옵니다.

예시:

일치하는 문서 수를 가져옵니다.

context.count

제공된 옵션을 사용하여 문서 수를 가져옵니다.

context.count(limit: 1)

제공된 차단 이 참인 경우의 개수를 가져옵니다.

context.count do |doc|
  doc.likes > 1
end

매개변수:

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

    건너뛰기 및 제한과 같은 옵션은 개수에 포함됩니다.

반환합니다:

  • (정수)

    일치 항목 수입니다.



73
74
75
76
77
78
79
80
81
82
83
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 73

def 카운트(옵션 = {}, &차단)
  반환 super(&차단) 만약 block_given?

  만약 valid_for_count_documents?
    보기.count_documents(옵션)
  other
    # TODO: 더 이상 사용되지 않는 for_js API 를 제거 할 때 이 항목을 제거하세요.
    # https://jira.mongodb.org/browse/MONGOID-5681
    보기.카운트(옵션)
  end
end

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

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

예시:

모든 문서를 삭제합니다.

context.delete

반환합니다:

  • (nil)

    Nil.



114
115
116
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 114

def 삭제
  보기.delete_many.Deleted_count
end

#Destorynil ~라고도 함: Destory_all

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

예시:

모든 문서를 파기합니다.

context.destroy

반환합니다:

  • (nil)

    Nil.



125
126
127
128
129
130
131
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 125

def 파괴
  .주입(0) do |카운트, doc|
    doc.파괴
    카운트 += 1 만약 승인된_쓰기?
    카운트
  end
end

#distinct(field) ⇒ Array<Object>

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

예시:

고유 값을 가져옵니다.

context.distinct(:name)

매개변수:

  • 필드 (string | 기호)

    필드의 이름입니다.

반환합니다:

  • (Array<Object>)

    필드 의 고유 값입니다.



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

def 별개(필드)
  이름 = class.Clean_localized_field_names(필드)

  보기.별개(이름).map do |value|
    is_translation = "#{name}_translations" == 필드.to_s
    recursive_demongoize(이름, value, is_translation)
  end
end

#각각(&block) ⇒ 열거자

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

예시:

컨텍스트를 반복합니다.

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

반환합니다:

  • (열거자)

    열거자입니다.



160
161
162
163
164
165
166
167
168
169
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 160

def (&차단)
  만약 block_given?
    documents_for_iteration. do |doc|
      yield_document(doc, &차단)
    end
    self
  other
    to_enum
  end
end

#추정 개수(옵션 = {}) ⇒ 정수

쿼리 와 일치하는 예상 문서 수를 가져옵니다.

카운트와 달리 추정된 카운트는 카운트와 같이 열거형에서 전통적으로 ( 차단 포함) 정의되지 않았기 때문에 차단 을 사용하지 않습니다.

예시:

일치하는 문서의 예상 수를 구합니다.

context.estimated_count

매개변수:

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

    카운트에 포함될 옵션(예: maxTimeMS)입니다.

반환합니다:

  • (정수)

    일치 항목 수입니다.



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

def 예상 개수(옵션 = {})
  하지 않는 한 self.기준.선택기.비어 있나요?
    만약 class.default_scoping?
      올리다 몽고이드::오류::InvalidEstimatedCountScoping.신규(self.class)
    other
      올리다 몽고이드::오류::InvalidEstimatedCountCriteria.신규(self.class)
    end
  end
  보기.예상_문서_수(옵션)
end

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

참고:

mongo 는 카운트된 B-트리 인덱스를 사용하지 않으므로 여기서는 카운트를 사용하지 않습니다.

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

예시:

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

context.exists?

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

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

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

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

매개변수:

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

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

반환합니다:

  • (true | false)

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



190
191
192
193
194
195
196
197
198
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 190

def 존재합니까?(id_or_conditions = : none)
  반환 거짓 만약 self.보기.limit == 0
  case id_or_conditions
  when : none then !!(보기.프로젝션(_id: 1).limit(1).first)
  when nil, 거짓 then 거짓
  when 해시 then mongo.신규(기준.위치(id_or_conditions)).존재합니까?
  other mongo.신규(기준.위치(_id: id_or_conditions)).존재합니까?
  end
end

#다섯 번째문서 | nil

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

예시:

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

context.fifth

반환합니다:

  • (Document | nil)

    다섯 번째 문서 를 반환하거나, 문서가 없으면 nil을 반환합니다.



699
700
701
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 699

def 다섯 번째
  retrieve_nth(4)
end

#다섯 번째!문서

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

예시:

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

context.fifth!

반환합니다:

  • (문서)

    다섯 번째 문서.

다음을 발생시킵니다.



713
714
715
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 713

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

#find_first객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

정렬을 적용하지 않고 첫 번째 결과 반환



256
257
258
259
260
261
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 256

def find_first
  만약 raw_doc = 보기.first
    doc = 공장.from_db(class, raw_doc, 기준)
    Eager_load([doc]).first
  end
end

#find_one_and_delete문서

MongoDB의 $findAndModify에 사용되는 찾기 및 수정 명령을 실행합니다. 그러면 찾은 문서 가 삭제됩니다.

예시:

명령을 실행합니다.

context.find_one_and_delete

반환합니다:

  • (문서)

    명령의 결과입니다.



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

def find_one_and_delete
  만약 doc = 보기.find_one_and_delete
    공장.from_db(class, doc)
  end
end

#find_one_and_replace(replacement, options = {}) ⇒ 문서

MongoDB의 $findAndModify에 사용되는 찾기 및 수정 명령을 실행합니다.

예시:

명령을 실행합니다.

context.find_one_and_update({ likes: 1 })

매개변수:

  • 교체 (해시)

    교체.

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

    명령 옵션.

옵션 해시(options):

  • :return_document (:before | :after)

    업데이트 된 문서 를 반환합니다.

  • : 업서트 (true | false)

    문서가 없는 경우 문서 를 만듭니다.

반환합니다:

  • (문서)

    명령의 결과입니다.



234
235
236
237
238
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 234

def find_one_and_replace(교체, 옵션 = {})
  만약 doc = 보기.find_one_and_replace(교체, 옵션)
    공장.from_db(class, doc)
  end
end

#find_one_and_update(update, options = {}) ⇒ Document

MongoDB의 $findAndModify에 사용되는 찾기 및 수정 명령을 실행합니다.

예시:

명령을 실행합니다.

context.find_one_and_update({ "$inc" => { likes: 1 }})

매개변수:

  • update (해시)

    업데이트.

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

    명령 옵션.

옵션 해시(options):

  • :return_document (:before | :after)

    업데이트 된 문서 를 반환합니다.

  • : 업서트 (true | false)

    문서가 없는 경우 문서 를 만듭니다.

반환합니다:

  • (문서)

    명령의 결과입니다.



214
215
216
217
218
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 214

def find_one_and_update(update, 옵션 = {})
  만약 doc = 보기.find_one_and_update(update, 옵션)
    공장.from_db(class, doc)
  end
end

#first(limit = nil) ⇒ 문서 | nil 이라고도 함: one

참고:

기준에 다른 정렬이 정의되어 있지 않은 경우 _id 에 대한 정렬을 자동으로 추가하면 성능 저하 문제가 발생할 수 있습니다. #first 또는 #last를 사용할 때 예기치 않은 성능 저하가 발생하고 기준에 정의된 정렬이 없는 경우 대신 #take를 사용합니다. #take 는 순서를 보장하지 않는다는 점에 유의하세요.

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

예시:

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

context.first

매개변수:

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

    반환할 문서 수입니다.

반환합니다:

  • (Document | nil)

    첫 번째 문서 를 반환하거나, 문서가 없는 경우 nil을 반환합니다.



550
551
552
553
554
555
556
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 550

def first(limit = nil)
  만약 limit.nil?
    retrieve_nth(0)
  other
    retrieve_nth_with_limit(0, limit)
  end
end

#먼저!문서

참고:

기준에 다른 정렬이 정의되어 있지 않은 경우 _id 에 대한 정렬을 자동으로 추가하면 성능 저하 문제가 발생할 수 있습니다. #first!를 사용할 때 예기치 않은 성능 저하가 발생하는 경우! 또는 #last! 기준에 정의된 정렬이 없는 경우 #take! 대신. #take! 순서를 보장하지 않습니다.

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

예시:

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

context.first!

반환합니다:

  • (문서)

    첫 번째 문서.

다음을 발생시킵니다.



575
576
577
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 575

def 먼저!
  first || raise_document_not_Found_error
end

#네 번째문서 | nil

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

예시:

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

context.fourth

반환합니다:

  • (Document | nil)

    네 번째 문서 를 반환하거나, 문서가 없으면 nil을 반환합니다.



675
676
677
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 675

def 네 번째
  retrieve_nth(3)
end

#네 번째!문서

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

예시:

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

context.fourth!

반환합니다:

  • (문서)

    네 번째 문서.

다음을 발생시킵니다.



689
690
691
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 689

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

#last(limit = nil) ⇒ Document | nil

참고:

기준에 다른 정렬이 정의되어 있지 않은 경우 _id 에 대한 정렬을 자동으로 추가하면 성능 저하 문제가 발생할 수 있습니다. #first 또는 #last를 사용할 때 예기치 않은 성능 저하가 발생하고 기준에 정의된 정렬이 없는 경우 대신 #take를 사용합니다. #take 는 순서를 보장하지 않는다는 점에 유의하세요.

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

예시:

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

context.last

매개변수:

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

    반환할 문서 수입니다.

반환합니다:

  • (Document | nil)

    마지막 문서 를 반환하거나, 문서가 없는 경우 nil을 반환합니다.



593
594
595
596
597
598
599
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 593

def last(limit = nil)
  만약 limit.nil?
    retrieve_nth_to_last(0)
  other
    retrieve_nth_to_last_with_limit(0, limit)
  end
end

마지막으로 #!문서

참고:

기준에 다른 정렬이 정의되어 있지 않은 경우 _id 에 대한 정렬을 자동으로 추가하면 성능 저하 문제가 발생할 수 있습니다. #first!를 사용할 때 예기치 않은 성능 저하가 발생하는 경우! 또는 #last! 기준에 정의된 정렬이 없는 경우 #take! 대신. #take! 순서를 보장하지 않습니다.

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

예시:

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

context.last!

반환합니다:

  • (문서)

    마지막 문서 입니다.

다음을 발생시킵니다.



617
618
619
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 617

def 마지막!
  last || raise_document_not_Found_error
end

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

쿼리 선택기와 일치하는 데이터베이스 의 문서 수를 반환합니다.

예시:

길이를 구합니다.

context.length

반환합니다:

  • (정수)

    문서 수입니다.



287
288
289
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 287

def 분량
  self.카운트
end

#limit(value) ⇒ mongo

데이터베이스 에서 반환되는 문서 수를 제한합니다.

예시:

문서를 제한합니다.

context.limit(20)

매개변수:

  • value (정수)

    반환할 문서 수입니다.

반환합니다:

  • (mongo)

    컨텍스트입니다.



300
301
302
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 300

def limit(value)
  @view = 보기.limit(value) 개인정보 정책에 self
end

#load_async객체

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

컨텍스트에 맞는 문서를 로드하는 작업을 예약합니다.

Mongoid 구성에 따라 예약된 작업 은 호출자의 스레드에서 즉시 실행되거나 비동기 실행을 위해 예약될 수 있습니다.



776
777
778
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 776

def load_async
  @documents_loader ||= DocumentsLoader.신규(보기, class, 기준)
end

#map_reduce(맵, 리듀스) ⇒ MapReduce

컨텍스트에서 맵/리듀스 작업을 시작합니다.

예시:

맵/리듀스를 시작합니다.

context.map_reduce(map, reduce)

매개변수:

  • map (string)

    지도 JavaScript 함수입니다.

  • reduce (string)

    reduce JavaScript 함수.

반환합니다:

  • (MapReduce)

    맵/리듀스 지연 래퍼.



313
314
315
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 313

def map_reduce(map, reduce)
  mapReduce.신규(컬렉션, 기준, map, reduce)
end

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

데이터베이스 에서 단일 필드 값을 선택합니다.

예시:

필드를 선택합니다.

context.pick(:_id)

매개변수:

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

    선택할 필드입니다.

반환합니다:

  • (Object | Array<Object>)

    선택한 값입니다.



361
362
363
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 361

def pick(*필드)
  limit(1).뽑다(*필드).first
end

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

데이터베이스 에서 필드 값을 가져옵니다. 컨텍스트에 대해 데이터베이스 에서 발견된 각 문서 에 대해 하나의 결과를 반환합니다. 결과는 Mongoid 필드 유형에 따라 정규화됩니다. 결과에는 중복 및 nil 값이 포함될 수 있습니다.

예시:

필드를 뽑습니다.

context.pluck(:_id)

매개변수:

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

    점 표기법을 사용하여 중첩된 필드를 포함할 수 있는 추출할 필드입니다.

반환합니다:

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

    추출된 값입니다. *fields 인수에 단일 값이 포함된 경우 배열 의 각 결과는 단일 값이 됩니다. 그렇지 않으면 배열 배열 됩니다.



333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 333

def 뽑다(*필드)
  # 여러 필드를 동일한 필드 이름에 매핑할 수 있습니다. 예를 들어,
  # 필드 와 해당 _translations 필드 는 데이터베이스 의 동일한 필드 에 매핑됩니다.
  # 이 때문에 요청된 필드를 추적 해야 합니다.
  normalized_field_names = []
  normalized_select = 필드.주입({}) do |해시, f|
    db_fn = class.database_field_name(f)
    normalized_field_names.push(db_fn)
    해시[class.Clean_localized_field_names(f)] = true
    해시
  end

  보기.프로젝션(normalized_select).reduce([]) do |뽑았다, doc|
    values = normalized_field_names.map do |n|
      extract_value(doc, n)
    end
    뽑았다 << (values.size == 1 ? values.first : values)
  end
end

#문서 | nil

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

예시:

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

context.second

반환합니다:

  • (Document | nil)

    두 번째 문서를 반환하거나, 문서가 없으면 nil을 반환합니다.



627
628
629
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 627

def 
  retrieve_nth(1)
end

#초!문서

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

예시:

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

context.second!

반환합니다:

  • (문서)

    두 번째 문서.

다음을 발생시킵니다.



641
642
643
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 641

def 두 번째!
   || raise_document_not_Found_error
end

#second_to_last문서 | nil

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

가 발견되었습니다.

예시:

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

context.second_to_last

반환합니다:

  • (Document | nil)

    마지막에서 두 번째 문서 또는 문서가 없는 경우 nil



725
726
727
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 725

def second_to_last
  retrieve_nth_to_last(1)
end

#second_to_last!문서

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

예시:

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

context.second_to_last!

반환합니다:

  • (문서)

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

다음을 발생시킵니다.



739
740
741
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 739

def second_to_last!
  second_to_last || raise_document_not_Found_error
end

#skip(value) ⇒ mongo

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

예시:

문서를 건너뜁니다.

context.skip(20)

매개변수:

  • value (정수)

    건너뛸 문서 수입니다.

반환합니다:

  • (mongo)

    컨텍스트입니다.



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

def 건너뛰기(value)
  @view = 보기.건너뛰기(value) 개인정보 정책에 self
end

#sort(values = nil, &block) ⇒ Mongo

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

예시:

문서를 정렬합니다.

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

매개변수:

  • values (해시) (기본값: nil)

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

반환합니다:

  • (mongo)

    컨텍스트입니다.



493
494
495
496
497
498
499
500
501
502
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 493

def sort(values = nil, &차단)
  만약 block_given?
    super(&차단)
  other
    # 기준 업데이트
    @criteria = 기준.order_by(values)
    apply_option(:sort)
    self
  end
end

#take(limit = nil) ⇒ Document | Array<Document>

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

예시:

10 문서 가져오기

context.take(10)

매개변수:

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

    반환할 문서 수 또는 nil입니다.

반환합니다:

  • (문서 | 배열<문서>)

    문서 목록 또는 값이 지정되지 않은 경우 하나의 문서 입니다.



374
375
376
377
378
379
380
381
382
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 374

def 가져(limit = nil)
  만약 limit
    limit(limit).to_a
  other
    # to_a를 먼저 수행하여 Mongo#first 메서드가 사용되지 않고
    # 결과가 정렬되지 않습니다.
    limit(1).to_a.first
  end
end

#take!Document

데이터베이스에서 하나의 문서를 가져오고 문서가 없는 경우 오류를 발생시킵니다.

예시:

문서 가져오기

context.take!

반환합니다:

  • (문서)

    문서입니다.

다음을 발생시킵니다.



393
394
395
396
397
398
399
400
401
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 393

def 받아!
  # to_a를 먼저 수행하여 Mongo#first 메서드가 사용되지 않고
  # 결과가 정렬되지 않습니다.
  만약 fst = limit(1).to_a.first
    fst
  other
    올리다 오류::DocumentNotFound.신규(class, nil, nil)
  end
end

#tally(필드) ⇒ 해시

단일 필드 값에 대한 개수 해시를 가져옵니다. 예를 들어 데이터베이스에 다음 문서가 있는 경우입니다.

{ _id: 1, age: 21 }
{ _id: 2, age: 21 }
{ _id: 3, age: 22 }

Model.tally("age")

다음과 같은 결과가 나타납니다.

{ 21 => 2, 22 => 1 }

배열 또는 embeddeds_many 연관 관계 내의 필드 를 집계할 때:

{ _id: 1, array: [ { x: 1 }, { x: 2 } ] }
{ _id: 2, array: [ { x: 1 }, { x: 2 } ] }
{ _id: 3, array: [ { x: 1 }, { x: 3 } ] }

Model.tally("array.x")

결과 해시의 키는 배열입니다.

{ [ 1, 2 ] => 2, [ 1, 3 ] => 1 }

해시 배열의 요소를 집계하고 키가 일부 해시에 존재하지 않는 경우, 집계 결과 해시에 해당 nil 키가 포함되지 않습니다.

{ _id: 1, array: [ { x: 1 }, { x: 2 }, { y: 3 } ] }

Model.tally("array.x")
# => { [ 1, 2 ] => 1 }

매개변수:

  • 필드 (string | 기호)

    필드 이름입니다.

반환합니다:

  • (해시)

    카운트의 해시입니다.



440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 440

def tally(필드)
  이름 = class.Clean_localized_field_names(필드)

  fld = class.traverse_association_tree(이름)
  파이프라인 = [ { "$ 그룹" => { _id: "$#{name}", 카운트: { "$sum": 1 } } } ]
  파이프라인.unshift("$match" => 보기.필터하다)  view. 필터하다.비어있나요?

  컬렉션.집계(파이프라인).reduce({}) do |tally, 문서|
    is_translation = "#{name}_translations" == 필드.to_s
    val = doc["_id"]

    key = if val.is_a?(배열)
      val.map do |v|
        demongoize_with_field(fld, v, is_translation)
      end
    
      other demongoize_with_field ( fld,val ,is_translation )end
    #

    키가 집계 해시에 이미 존재하는 유일한 경우는
    # 값이 데이터베이스 에 다르게 저장되지만
    # demongoize 동일한 값. 이러한 일이 # 발생하는 좋은 예시 는
    현지화된 필드를 사용할 때입니다. 서버 쿼리 그룹
    다른 언어로 다른 값을 가진 해시를 # 그룹화하지 않지만,    # 악마화된 값은 현재 국가 및 국가 및 언어 설정 설정의 번역일 뿐입니다    .
    tally[key] ||= 0
    tally[key] += doc["counts"]
    tally
  end
end

#세 번째문서 | nil

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

예시:

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

context.third

반환합니다:

  • (Document | nil)

    세 번째 문서 를 반환하거나, 문서가 없으면 nil을 반환합니다.



651
652
653
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 651

def 세 번째
  retrieve_nth(2)
end

#세 번째!문서

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

예시:

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

context.third!

반환합니다:

  • (문서)

    세 번째 문서.

다음을 발생시킵니다.



665
666
667
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 665

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

#Third_to_last문서 | nil

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

가 발견되었습니다.

예시:

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

context.third_to_last

반환합니다:

  • (Document | nil)

    마지막에서 세 번째 문서 또는 문서가 없는 경우 nil



751
752
753
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 751

def Third_to_last
  retrieve_nth_to_last(2)
end

#Third_to_last!문서

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

예시:

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

context.third_to_last!

반환합니다:

  • (문서)

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

다음을 발생시킵니다.



765
766
767
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 765

def Third_to_last!
  Third_to_last || raise_document_not_Found_error
end

#update(attributes = nil, opts = {}) ⇒ nil | false

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

예시:

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

context.update({ "$set" => { name: "Smiths" }})

매개변수:

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

    문서의 새 속성입니다.

  • opts (해시) (기본값: {})

    업데이트 작업 옵션입니다.

옵션 해시(opts):

  • :array_filters (배열)

    업데이트 를 적용 해야 하는 배열 요소를 지정하는 필터 설정하다 입니다.

반환합니다:

  • (nil | false)

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



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

def update(속성 = nil, opts = {})
  update_documents(속성, :update_one, opts)
end

#update_all(attributes = nil, opts = {}) ⇒ nil | false

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

예시:

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

context.update_all({ "$set" => { name: "Smiths" }})

매개변수:

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

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

  • opts (해시) (기본값: {})

    업데이트 작업 옵션입니다.

옵션 해시(opts):

  • :array_filters (배열)

    업데이트 를 적용 해야 하는 배열 요소를 지정하는 필터 설정하다 입니다.

반환합니다:

  • (nil | false)

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



532
533
534
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 532

def update_all(속성 = nil, opts = {})
  update_documents(속성, :update_many, opts)
end