클래스: 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)

매개변수:



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

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

인스턴스 속성 세부 정보

#documents_loader객체 (읽기 전용)

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



57
58
59
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 57

def Documents_loader
  @documents_loader
end

#보기해시 (읽기 전용)

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

예시:

기준을 설명합니다.

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

매개변수:

  • 옵션 (해시)

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

반환합니다:

  • (해시)

    결과를 설명합니다.



45
46
47
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 45

def 보기
  @view
end

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



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

attr_reader :view

인스턴스 메서드 세부 정보

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

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

예시:

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

context.count

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

context.count(limit: 1)

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

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

매개변수:

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

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

반환합니다:

  • (정수)

    일치 항목 수입니다.



76
77
78
79
80
81
82
83
84
85
86
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 76

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.



117
118
119
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 117

def 삭제
  보기.delete_many.Deleted_count
end

#Destorynil ~라고도 함: Destory_all

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

예시:

모든 문서를 파기합니다.

context.destroy

반환합니다:

  • (nil)

    Nil.



128
129
130
131
132
133
134
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 128

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

#distinct(field) ⇒ Array<Object>

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

예시:

고유 값을 가져옵니다.

context.distinct(:name)

매개변수:

  • 필드 (string | 기호)

    필드의 이름입니다.

반환합니다:

  • (Array<Object>)

    필드 의 고유 값입니다.



145
146
147
148
149
150
151
152
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 145

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

반환합니다:

  • (열거자)

    열거자입니다.



163
164
165
166
167
168
169
170
171
172
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 163

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

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

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

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

예시:

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

context.estimated_count

매개변수:

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

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

반환합니다:

  • (정수)

    일치 항목 수입니다.



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

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



193
194
195
196
197
198
199
200
201
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 193

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을 반환합니다.



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

def 다섯 번째
  retrieve_nth(4)
end

#다섯 번째!문서

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

예시:

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

context.fifth!

반환합니다:

  • (문서)

    다섯 번째 문서.

다음을 발생시킵니다.



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

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

#find_first객체

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

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



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

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

반환합니다:

  • (문서)

    명령의 결과입니다.



250
251
252
253
254
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 250

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)

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

반환합니다:

  • (문서)

    명령의 결과입니다.



237
238
239
240
241
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 237

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)

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

반환합니다:

  • (문서)

    명령의 결과입니다.



217
218
219
220
221
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 217

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을 반환합니다.



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

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!

반환합니다:

  • (문서)

    첫 번째 문서.

다음을 발생시킵니다.



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

def 먼저!
  first || raise_document_not_Found_error
end

#네 번째문서 | nil

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

예시:

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

context.fourth

반환합니다:

  • (Document | nil)

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



701
702
703
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 701

def 네 번째
  retrieve_nth(3)
end

#네 번째!문서

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

예시:

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

context.fourth!

반환합니다:

  • (문서)

    네 번째 문서.

다음을 발생시킵니다.



715
716
717
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 715

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

#geo_near(좌표) ⇒ GeoNear

더 이상 사용되지 않습니다.

데이터베이스 에 대해 $geoNear 명령을 실행합니다.

예시:

10, 10 에 가까운 문서를 찾습니다.

context.geo_near([ 10, 10 ])

구형 거리로 찾기.

context.geo_near([ 10, 10 ]).spherical

최대 거리로 찾기.

context.geo_near([ 10, 10 ]).max_distance(0.5)

거리 승수를 제공합니다.

context.geo_near([ 10, 10 ]).distance_multiplier(1133)

매개변수:

  • coordinates (Array<Float>)

    좌표입니다.

반환합니다:



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

def geo_near(coordinates)
  geoNear.신규(컬렉션, 기준, coordinates)
end

#last(limit = nil) ⇒ Document | nil

참고:

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

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

예시:

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

context.last

매개변수:

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

    반환할 문서 수입니다.

반환합니다:

  • (Document | nil)

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



619
620
621
622
623
624
625
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 619

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!

반환합니다:

  • (문서)

    마지막 문서 입니다.

다음을 발생시킵니다.



643
644
645
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 643

def 마지막!
  last || raise_document_not_Found_error
end

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

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

예시:

길이를 구합니다.

context.length

반환합니다:

  • (정수)

    문서 수입니다.



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

def 분량
  self.카운트
end

#limit(value) ⇒ mongo

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

예시:

문서를 제한합니다.

context.limit(20)

매개변수:

  • value (정수)

    반환할 문서 수입니다.

반환합니다:

  • (mongo)

    컨텍스트입니다.



326
327
328
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 326

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

#load_async객체

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

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

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



802
803
804
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 802

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

#map_reduce(맵, 리듀스) ⇒ MapReduce

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

예시:

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

context.map_reduce(map, reduce)

매개변수:

  • map (string)

    지도 JavaScript 함수입니다.

  • reduce (string)

    reduce JavaScript 함수.

반환합니다:

  • (MapReduce)

    맵/리듀스 지연 래퍼.



339
340
341
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 339

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

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

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

예시:

필드를 선택합니다.

context.pick(:_id)

매개변수:

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

    선택할 필드입니다.

반환합니다:

  • (Object | Array<Object>)

    선택한 값입니다.



387
388
389
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 387

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



359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 359

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을 반환합니다.



653
654
655
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 653

def 
  retrieve_nth(1)
end

#초!문서

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

예시:

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

context.second!

반환합니다:

  • (문서)

    두 번째 문서.

다음을 발생시킵니다.



667
668
669
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 667

def 두 번째!
   || raise_document_not_Found_error
end

#second_to_last문서 | nil

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

가 발견되었습니다.

예시:

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

context.second_to_last

반환합니다:

  • (Document | nil)

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



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

def second_to_last
  retrieve_nth_to_last(1)
end

#second_to_last!문서

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

예시:

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

context.second_to_last!

반환합니다:

  • (문서)

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

다음을 발생시킵니다.



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

def second_to_last!
  second_to_last || raise_document_not_Found_error
end

#skip(value) ⇒ mongo

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

예시:

문서를 건너뜁니다.

context.skip(20)

매개변수:

  • value (정수)

    건너뛸 문서 수입니다.

반환합니다:

  • (mongo)

    컨텍스트입니다.



506
507
508
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 506

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

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

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

예시:

문서를 정렬합니다.

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

매개변수:

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

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

반환합니다:

  • (mongo)

    컨텍스트입니다.



519
520
521
522
523
524
525
526
527
528
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 519

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

반환합니다:

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

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



400
401
402
403
404
405
406
407
408
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 400

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

#take!Document

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

예시:

문서 가져오기

context.take!

반환합니다:

  • (문서)

    문서입니다.

다음을 발생시킵니다.



419
420
421
422
423
424
425
426
427
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 419

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

    필드 이름입니다.

반환합니다:

  • (해시)

    카운트의 해시입니다.



466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 466

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을 반환합니다.



677
678
679
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 677

def 세 번째
  retrieve_nth(2)
end

#세 번째!문서

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

예시:

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

context.third!

반환합니다:

  • (문서)

    세 번째 문서.

다음을 발생시킵니다.



691
692
693
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 691

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

#Third_to_last문서 | nil

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

가 발견되었습니다.

예시:

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

context.third_to_last

반환합니다:

  • (Document | nil)

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



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

def Third_to_last
  retrieve_nth_to_last(2)
end

#Third_to_last!문서

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

예시:

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

context.third_to_last!

반환합니다:

  • (문서)

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

다음을 발생시킵니다.



791
792
793
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 791

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



542
543
544
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 542

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



558
559
560
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 558

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