클래스: Mongoid::Contextual::Mongo

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

개요

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

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

클래스: DocumentsLoader

상수 요약 접기

OPTIONS =

옵션 상수입니다.

%i[hint
limit
건너뛰기
sort
batch_size
max_scan
max_time_ms
스냅샷
comment
읽기
cursor_type
데이터 정렬].동결

Atomic에 포함된 상수

Atomic::UPDATES

인스턴스 속성 요약 접기

Queryable에 포함된 속성

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

인스턴스 메서드 요약 접기

Queryable에 포함된 메서드

#blank?

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

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

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)

매개변수:



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

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

인스턴스 속성 세부 정보

#documents_loader객체 (읽기 전용)

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



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

def Documents_loader
  @documents_loader
end

#보기해시 (읽기 전용)

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

예시:

기준을 설명합니다.

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

매개변수:

  • 옵션 (해시)

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

반환합니다:

  • (해시)

    결과를 설명합니다.



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

def 보기
  @view
end

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



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

attr_reader :view

인스턴스 메서드 세부 정보

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

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

예시:

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

context.count

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

context.count(limit: 1)

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

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

매개변수:

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

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

반환합니다:

  • (정수)

    일치 항목 수입니다.



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

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.



112
113
114
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 112

def 삭제
  보기.delete_many.Deleted_count
end

#Destorynil ~라고도 함: Destory_all

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

예시:

모든 문서를 파기합니다.

context.destroy

반환합니다:

  • (nil)

    Nil.



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

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

#distinct(field) ⇒ Array<Object>

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

예시:

고유 값을 가져옵니다.

context.distinct(:name)

매개변수:

  • 필드 (string | 기호)

    필드의 이름입니다.

반환합니다:

  • (Array<Object>)

    필드 의 고유 값입니다.



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

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

반환합니다:

  • (열거자)

    열거자입니다.



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

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

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

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

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

예시:

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

context.estimated_count

매개변수:

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

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

반환합니다:

  • (정수)

    일치 항목 수입니다.



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

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

    올리다 몽고이드::오류::InvalidEstimatedCountCriteria.신규(class)

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



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

def 존재합니까?(id_or_conditions = : none)
  반환 거짓 만약 보기.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을 반환합니다.



684
685
686
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 684

def 다섯 번째
  retrieve_nth(4)
end

#다섯 번째!문서

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

예시:

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

context.fifth!

반환합니다:

  • (문서)

    다섯 번째 문서.

다음을 발생시킵니다.



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

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

#find_first객체

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

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



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

def find_first
  반환 하지 않는 한 raw_doc = 보기.first

  doc = 공장.from_db(class, raw_doc, 기준)
  Eager_load([ doc ]).first
end

#find_one_and_delete문서

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

예시:

명령을 실행합니다.

context.find_one_and_delete

반환합니다:

  • (문서)

    명령의 결과입니다.



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

def find_one_and_delete
  반환 하지 않는 한 doc = 보기.find_one_and_delete

  공장.from_db(class, doc)
end

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

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

예시:

명령을 실행합니다.

context.find_one_and_update({ likes: 1 })

매개변수:

  • 교체 (해시)

    교체.

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

    명령 옵션.

옵션 해시(options):

  • :return_document (:before | :after)

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

  • : 업서트 (true | false)

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

반환합니다:

  • (문서)

    명령의 결과입니다.



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

def find_one_and_replace(교체, 옵션 = {})
  반환 하지 않는 한 doc = 보기.find_one_and_replace(교체, 옵션)

  공장.from_db(class, doc)
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)

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

반환합니다:

  • (문서)

    명령의 결과입니다.



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

def find_one_and_update(update, 옵션 = {})
  반환 하지 않는 한 doc = 보기.find_one_and_update(update, 옵션)

  공장.from_db(class, doc)
end

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

참고:

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

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

예시:

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

context.first

매개변수:

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

    반환할 문서 수입니다.

반환합니다:

  • (Document | nil)

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



535
536
537
538
539
540
541
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 535

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!

반환합니다:

  • (문서)

    첫 번째 문서.

다음을 발생시킵니다.



560
561
562
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 560

def 먼저!
  first || raise_document_not_Found_error
end

#네 번째문서 | nil

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

예시:

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

context.fourth

반환합니다:

  • (Document | nil)

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



660
661
662
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 660

def 네 번째
  retrieve_nth(3)
end

#네 번째!문서

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

예시:

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

context.fourth!

반환합니다:

  • (문서)

    네 번째 문서.

다음을 발생시킵니다.



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

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

#last(limit = nil) ⇒ Document | nil

참고:

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

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

예시:

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

context.last

매개변수:

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

    반환할 문서 수입니다.

반환합니다:

  • (Document | nil)

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



578
579
580
581
582
583
584
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 578

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!

반환합니다:

  • (문서)

    마지막 문서 입니다.

다음을 발생시킵니다.



602
603
604
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 602

def 마지막!
  last || raise_document_not_Found_error
end

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

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

예시:

길이를 구합니다.

context.length

반환합니다:

  • (정수)

    문서 수입니다.



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

def 분량
  카운트
end

#limit(value) ⇒ mongo

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

예시:

문서를 제한합니다.

context.limit(20)

매개변수:

  • value (정수)

    반환할 문서 수입니다.

반환합니다:

  • (mongo)

    컨텍스트입니다.



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

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

#load_async객체

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

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

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



761
762
763
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 761

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

#map_reduce(맵, 리듀스) ⇒ MapReduce

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

예시:

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

context.map_reduce(map, reduce)

매개변수:

  • map (string)

    지도 JavaScript 함수입니다.

  • reduce (string)

    reduce JavaScript 함수.

반환합니다:

  • (MapReduce)

    맵/리듀스 지연 래퍼.



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

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

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

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

예시:

필드를 선택합니다.

context.pick(:_id)

매개변수:

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

    선택할 필드입니다.

반환합니다:

  • (Object | Array<Object>)

    선택한 값입니다.



349
350
351
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 349

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 인수에 단일 값이 포함된 경우 배열 의 각 결과는 단일 값이 됩니다. 그렇지 않으면 배열 배열 됩니다.



332
333
334
335
336
337
338
339
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 332

def 뽑다(*필드)
  # 여러 필드를 동일한 필드 이름에 매핑할 수 있습니다. 예시 들어,
  # 필드 와 해당 _translations 필드 매핑을 동일하게
  # 데이터베이스 의 필드 . 이 때문에
  구체적으로 # 프로젝션 .
  prep = prepare_puck(필드, prepare_projection: true)
  puck_from_documents(보기.프로젝션(prep[:projection]), prep[:field_names])
end

#문서 | nil

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

예시:

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

context.second

반환합니다:

  • (Document | nil)

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



612
613
614
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 612

def 
  retrieve_nth(1)
end

#초!문서

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

예시:

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

context.second!

반환합니다:

  • (문서)

    두 번째 문서.

다음을 발생시킵니다.



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

def 두 번째!
   || raise_document_not_Found_error
end

#second_to_last문서 | nil

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

가 발견되었습니다.

예시:

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

context.second_to_last

반환합니다:

  • (Document | nil)

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



710
711
712
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 710

def second_to_last
  retrieve_nth_to_last(1)
end

#second_to_last!문서

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

예시:

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

context.second_to_last!

반환합니다:

  • (문서)

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

다음을 발생시킵니다.



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

def second_to_last!
  second_to_last || raise_document_not_Found_error
end

#skip(value) ⇒ mongo

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

예시:

문서를 건너뜁니다.

context.skip(20)

매개변수:

  • value (정수)

    건너뛸 문서 수입니다.

반환합니다:

  • (mongo)

    컨텍스트입니다.



465
466
467
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 465

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

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

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

예시:

문서를 정렬합니다.

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

매개변수:

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

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

반환합니다:

  • (mongo)

    컨텍스트입니다.



478
479
480
481
482
483
484
485
486
487
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 478

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

반환합니다:

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

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



362
363
364
365
366
367
368
369
370
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 362

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

#take!Document

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

예시:

문서 가져오기

context.take!

반환합니다:

  • (문서)

    문서입니다.

다음을 발생시킵니다.



381
382
383
384
385
386
387
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 381

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

  fst
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 | 기호)

    필드 이름입니다.

반환합니다:

  • (해시)

    카운트의 해시입니다.



426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 426

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

  fld = class.traverse_association_tree(이름)
  파이프라인 = [ { '$ 그룹 ' => { _id: "$#{name}", 카운트: {      
      

     
        
      

       
              
                
            
          
              
          

    
    
    
    
    
              
      
  
' $sum ': 1 ] 파이프라인. unshift ( ' $match ' => 필터하다 ), 그렇지 않으면 view. 필터하다. 비어 있나요? 컬렉션. 집계( 파이프라인 ). each_with_object ( { } ) 수행 | 문서, 탈리 | is_translation = " #{ name } _translations " == 필드. to_s val = doc [ ' _id ' ] key = if val. is_a? ( 배열 ) 값입니다. map do | v | demongoize_with_field ( fld, v, is_translation ) end other demongoize_with_field ( fld, val, is_translation ) end # 키가 집계 해시에 이미 존재하는 유일한 경우는 # 값이 데이터베이스 에 다르게 저장되지만 # demongoize 동일한 값. 이러한 일이 # 발생하는 좋은 예시 는 현지화된 필드를 사용할 때입니다. 서버 쿼리 다른 언어로 다른 값을 가진 해시를 # 그룹 하지 않지만, # 악마화된 값은 현재 국가 및 언어 설정 언어 설정의 번역일 뿐입니다. tally [ key ] ||=0tally [ key ] += doc [ ' counts ' ] end end

#세 번째문서 | nil

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

예시:

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

context.third

반환합니다:

  • (Document | nil)

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



636
637
638
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 636

def 세 번째
  retrieve_nth(2)
end

#세 번째!문서

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

예시:

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

context.third!

반환합니다:

  • (문서)

    세 번째 문서.

다음을 발생시킵니다.



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

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

#Third_to_last문서 | nil

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

가 발견되었습니다.

예시:

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

context.third_to_last

반환합니다:

  • (Document | nil)

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



736
737
738
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 736

def Third_to_last
  retrieve_nth_to_last(2)
end

#Third_to_last!문서

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

예시:

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

context.third_to_last!

반환합니다:

  • (문서)

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

다음을 발생시킵니다.



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

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



501
502
503
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 501

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



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

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