클래스: Mongoid::Contextual::Mongo
- 상속:
-
객체
- 객체
- 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에 포함된 상수
인스턴스 속성 요약 접기
-
#documents_loader ⇒ 객체
읽기 전용
Documents_loader 속성의 값을 반환합니다.
-
#보기 ⇒ 해시
읽기 전용
기준에 대해 설명을 실행합니다.
- #view mongo 컬렉션 뷰입니다.(TheMongocollectionview.) ⇒ 객체 읽기 전용
Queryable에 포함된 속성
#collection, #collection 쿼리할 컬렉션입니다., #criteria, #criteria 컨텍스트에 대한 기준입니다., #klass, #klass 기준에 대한 klass입니다.
인스턴스 메서드 요약 접기
-
#count(options = {}, &block) ⇒ 정수
쿼리 와 일치하는 문서 수를 가져옵니다.
-
#삭제 ⇒ nil (동의어: #delete_all)
데이터베이스에서 선택기와 일치하는 모든 문서를 삭제합니다.
-
#파괴 ⇒ nil (동의어: #destory_all)
데이터베이스 에서 선택기와 일치하는 모든 문서를 삭제합니다.
-
#distinct(field) ⇒ Array<Object>
제공된 필드 에 대해 db에서 고유 값을 가져옵니다.
-
#각각(&block) ⇒ 열거자
컨텍스트를 반복합니다.
-
#추정 개수(옵션 = {}) ⇒ 정수
쿼리 와 일치하는 예상 문서 수를 가져옵니다.
-
#존재합니까?(id_or_conditions = :none) ⇒ true | false
컨텍스트에 해당하는 문서가 있나요?
-
#다섯 번째 ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 에서 다섯 번째 문서 를 가져옵니다.
-
#다섯 번째! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 다섯 번째 문서 를 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
-
#find_first ⇒ 객체
비공개
정렬을 적용하지 않고 첫 번째 결과를 반환합니다.
-
#find_one_and_delete ⇒ 문서
MongoDB의 $findAndModify에 사용되는 찾기 및 수정 명령을 실행합니다.
-
#find_one_and_replace(replacement, options = {}) ⇒ 문서
MongoDB의 $findAndModify에 사용되는 찾기 및 수정 명령을 실행합니다.
-
#find_one_and_update(update, options = {}) ⇒ 문서
MongoDB의 $findAndModify에 사용되는 찾기 및 수정 명령을 실행합니다.
-
#first(limit = nil) ⇒ 문서 | nil (동의어: #one)
기준 선택기에 대한 데이터베이스 의 첫 번째 문서 를 가져옵니다.
-
#먼저! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 첫 번째 문서 를 가져오거나, 기준 선택기를 찾을 수 없는 경우 오류를 발생시킵니다.
-
#네 번째 ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 에서 네 번째 문서 를 가져옵니다.
-
#네 번째! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 네 번째 문서 를 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
- #geo_near(좌표) ⇒ GeoNear 사용 중단 더 이상 사용되지 않습니다.
-
#initialize(기준) ⇒ mongo
생성자
새 mongo 컨텍스트를 만듭니다.
-
#last(limit = nil) ⇒ Document | nil
기준 선택기에 대해 데이터베이스 의 마지막 문서 를 가져옵니다.
-
#last! ⇒ Document
기준 선택기에 대해 데이터베이스 에서 마지막 문서 를 가져오거나, 기준 선택기를 찾을 수 없는 경우 오류를 발생시킵니다.
-
#length ⇒ 정수 (동의어: #size)
쿼리 선택기와 일치하는 데이터베이스 의 문서 수를 반환합니다.
-
#limit(value) ⇒ mongo
데이터베이스 에서 반환되는 문서 수를 제한합니다.
-
#load_async ⇒ 객체
비공개
컨텍스트에 맞는 문서를 로드하는 작업을 예약합니다.
-
#map_reduce(맵, 리듀스) ⇒ MapReduce
컨텍스트에서 맵/리듀스 작업을 시작합니다.
-
#pick(*fields) ⇒ 객체 | Array<Object>
데이터베이스 에서 단일 필드 값을 선택합니다.
-
#puck(*fields) ⇒ Array<Object> | Array<Array<Object>>
데이터베이스에서 필드 값을 가져옵니다.
-
#초 ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 에서 두 번째 문서 를 가져옵니다.
-
#초! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 두 번째 문서 를 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
-
#second_to_last ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 의 마지막 문서 에서 두 번째 문서를 가져옵니다.
-
#second_to_last! ⇒ 문서
기준 선택기에 대해 데이터베이스 의 마지막 문서 에서 두 번째 문서를 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
-
#skip(value) ⇒ mongo
제공된 수의 문서를 건너뜁니다.
-
#sort(values = nil, &block) ⇒ Mongo
제공된 사양에 따라 문서를 정렬합니다.
-
#take(limit = nil) ⇒ 문서 | Array<Document>
데이터베이스에서 지정된 수의 문서를 가져옵니다.
-
#take! ⇒ Document
데이터베이스에서 하나의 문서를 가져오고 문서가 없는 경우 오류를 발생시킵니다.
-
#tally(필드) ⇒ 해시
단일 필드 값에 대한 개수 해시를 가져옵니다.
-
#세 번째 ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 에서 세 번째 문서 를 가져옵니다.
-
#세 번째! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 세 번째 문서 를 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
-
#Third_to_last ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 의 마지막 문서 에서 세 번째 문서를 가져옵니다.
-
#Third_to_last! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 마지막에서 세 번째 문서 를 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
-
#update(attributes = nil, opts = {}) ⇒ nil | false
일치하는 첫 번째 문서 원자적으로 업데이트합니다.
-
#update_all(attributes = nil, opts = {}) ⇒ nil | false
일치하는 모든 문서를 원자적으로 업데이트합니다.
Queryable에 포함된 메서드
연관 관계::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 컨텍스트를 만듭니다. 이렇게 하면 기본 드라이버에 작업이 위임됩니다.
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) end |
인스턴스 속성 세부 정보
#documents_loader ⇒ 객체 (읽기 전용)
Documents_loader 속성의 값을 반환합니다.
57 58 59 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 57 def Documents_loader @documents_loader end |
#보기 ⇒ 해시 (읽기 전용)
기준에 대해 설명을 실행합니다.
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) ⇒ 정수
쿼리 와 일치하는 문서 수를 가져옵니다.
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 |
#delete ⇒ nil 또한 다음과 같습니다: delete_all
데이터베이스에서 선택기와 일치하는 모든 문서를 삭제합니다.
117 118 119 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 117 def 삭제 보기.delete_many.Deleted_count end |
#Destory ⇒ nil ~라고도 함: Destory_all
데이터베이스 에서 선택기와 일치하는 모든 문서를 삭제합니다.
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에서 고유 값을 가져옵니다.
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 문서 에 양보하고, 그렇지 않으면 열거형 을 반환합니다.
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 |
#추정 개수(옵션 = {}) ⇒ 정수
쿼리 와 일치하는 예상 문서 수를 가져옵니다.
카운트와 달리 추정된 카운트는 카운트와 같이 열거형에서 전통적으로 ( 차단 포함) 정의되지 않았기 때문에 차단 을 사용하지 않습니다.
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-트리 인덱스를 사용하지 않으므로 여기서는 카운트를 사용하지 않습니다.
컨텍스트에 해당하는 문서가 있나요?
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
기준 선택기에 대해 데이터베이스 에서 다섯 번째 문서 를 가져옵니다.
725 726 727 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 725 def 다섯 번째 retrieve_nth(4) end |
#다섯 번째! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 다섯 번째 문서 를 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
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에 사용되는 찾기 및 수정 명령을 실행합니다. 그러면 찾은 문서 가 삭제됩니다.
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에 사용되는 찾기 및 수정 명령을 실행합니다.
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에 사용되는 찾기 및 수정 명령을 실행합니다.
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 는 순서를 보장하지 않는다는 점에 유의하세요.
기준 선택기에 대한 데이터베이스 의 첫 번째 문서 를 가져옵니다.
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! 순서를 보장하지 않습니다.
기준 선택기에 대해 데이터베이스 에서 첫 번째 문서 를 가져오거나, 기준 선택기를 찾을 수 없는 경우 오류를 발생시킵니다.
601 602 603 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 601 def 먼저! first || raise_document_not_Found_error end |
#네 번째 ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 에서 네 번째 문서 를 가져옵니다.
701 702 703 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 701 def 네 번째 retrieve_nth(3) end |
#네 번째! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 네 번째 문서 를 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
715 716 717 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 715 def 네 번째! 네 번째 || raise_document_not_Found_error end |
#geo_near(좌표) ⇒ GeoNear
데이터베이스 에 대해 $geoNear 명령을 실행합니다.
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 는 순서를 보장하지 않는다는 점에 유의하세요.
기준 선택기에 대해 데이터베이스 의 마지막 문서 를 가져옵니다.
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! 순서를 보장하지 않습니다.
기준 선택기에 대해 데이터베이스 에서 마지막 문서 를 가져오거나, 기준 선택기를 찾을 수 없는 경우 오류를 발생시킵니다.
643 644 645 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 643 def 마지막! last || raise_document_not_Found_error end |
#길이 ⇒ 정수 ~라고도 함: 크기
쿼리 선택기와 일치하는 데이터베이스 의 문서 수를 반환합니다.
313 314 315 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 313 def 분량 self.카운트 end |
#limit(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
컨텍스트에서 맵/리듀스 작업을 시작합니다.
339 340 341 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 339 def map_reduce(map, reduce) mapReduce.신규(컬렉션, 기준, map, reduce) end |
#pick(*fields) ⇒ 객체 | 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 값이 포함될 수 있습니다.
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
기준 선택기에 대해 데이터베이스 에서 두 번째 문서 를 가져옵니다.
653 654 655 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 653 def 초 retrieve_nth(1) end |
#초! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 두 번째 문서 를 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
667 668 669 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 667 def 두 번째! 초 || raise_document_not_Found_error end |
#second_to_last ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 의 마지막 문서 에서 두 번째 문서를 가져옵니다.
가 발견되었습니다.
751 752 753 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 751 def second_to_last retrieve_nth_to_last(1) end |
#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
제공된 수의 문서를 건너뜁니다.
506 507 508 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 506 def 건너뛰기(value) @view = 보기.건너뛰기(value) 개인정보 정책에 self end |
#sort(values = nil, &block) ⇒ 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>
데이터베이스에서 지정된 수의 문서를 가져옵니다.
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
데이터베이스에서 하나의 문서를 가져오고 문서가 없는 경우 오류를 발생시킵니다.
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 }
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
기준 선택기에 대해 데이터베이스 에서 세 번째 문서 를 가져옵니다.
677 678 679 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 677 def 세 번째 retrieve_nth(2) end |
#세 번째! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 세 번째 문서 를 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
691 692 693 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 691 def 세 번째! 세 번째 || raise_document_not_Found_error end |
#Third_to_last ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 의 마지막 문서 에서 세 번째 문서를 가져옵니다.
가 발견되었습니다.
777 778 779 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 777 def Third_to_last retrieve_nth_to_last(2) end |
#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
일치하는 첫 번째 문서 원자적으로 업데이트합니다.
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
일치하는 모든 문서를 원자적으로 업데이트합니다.
558 559 560 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 558 def update_all(속성 = nil, opts = {}) update_documents(속성, :update_many, opts) end |