클래스: Mongoid::Contextual::Mongo
- 상속:
-
객체
- 객체
- 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에 포함된 상수
인스턴스 속성 요약 접기
-
#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
기준 선택기에 대해 데이터베이스 에서 네 번째 문서 가져옵니다.
-
#네 번째! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 네 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
-
#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에 포함된 메서드
#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 컨텍스트를 만듭니다. 이렇게 하면 기본 드라이버에 작업이 위임됩니다.
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) end |
인스턴스 속성 세부 정보
#documents_loader ⇒ 객체 (읽기 전용)
Documents_loader 속성의 값을 반환합니다.
53 54 55 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 53 def Documents_loader @documents_loader end |
#보기 ⇒ 해시 (읽기 전용)
기준에 대해 설명을 실행합니다.
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) ⇒ 정수
쿼리 와 일치하는 문서 수를 가져옵니다.
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 |
#delete ⇒ nil 또한 다음과 같습니다: delete_all
데이터베이스에서 선택기와 일치하는 모든 문서를 삭제합니다.
112 113 114 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 112 def 삭제 보기.delete_many.Deleted_count end |
#Destory ⇒ nil ~라고도 함: Destory_all
데이터베이스 에서 선택기와 일치하는 모든 문서를 삭제합니다.
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에서 고유 값을 가져옵니다.
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 문서 에 양보하고, 그렇지 않으면 열거형 을 반환합니다.
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 |
#추정 개수(옵션 = {}) ⇒ 정수
쿼리 와 일치하는 예상 문서 수를 가져옵니다.
카운트와 달리 추정된 카운트는 카운트와 같이 열거형에서 전통적으로 ( 차단 포함) 정의되지 않았기 때문에 차단 사용하지 않습니다.
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-트리 인덱스를 사용하지 않으므로 여기서는 카운트를 사용하지 않습니다.
컨텍스트에 해당하는 문서가 있나요?
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
기준 선택기에 대해 데이터베이스 에서 다섯 번째 문서 가져옵니다.
684 685 686 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 684 def 다섯 번째 retrieve_nth(4) end |
#다섯 번째! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 다섯 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
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에 사용되는 찾기 및 수정 명령을 실행합니다. 그러면 찾은 문서 가 삭제됩니다.
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에 사용되는 찾기 및 수정 명령을 실행합니다.
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에 사용되는 찾기 및 수정 명령을 실행합니다.
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 는 순서를 보장하지 않는다는 점에 유의하세요.
기준 선택기에 대한 데이터베이스 의 첫 번째 문서 가져옵니다.
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! 순서를 보장하지 않습니다.
기준 선택기에 대해 데이터베이스 에서 첫 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
560 561 562 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 560 def 먼저! first || raise_document_not_Found_error end |
#네 번째 ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 에서 네 번째 문서 가져옵니다.
660 661 662 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 660 def 네 번째 retrieve_nth(3) end |
#네 번째! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 네 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
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 는 순서를 보장하지 않는다는 점에 유의하세요.
기준 선택기에 대해 데이터베이스 의 마지막 문서 가져옵니다.
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! 순서를 보장하지 않습니다.
기준 선택기에 대해 데이터베이스 에서 마지막 문서 가져오거나, 기준 선택기를 찾을 수 없는 경우 오류를 발생시킵니다.
602 603 604 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 602 def 마지막! last || raise_document_not_Found_error end |
#길이 ⇒ 정수 ~라고도 함: 크기
쿼리 선택기와 일치하는 데이터베이스 의 문서 수를 반환합니다.
286 287 288 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 286 def 분량 카운트 end |
#limit(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
컨텍스트에서 맵/리듀스 작업을 시작합니다.
312 313 314 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 312 def map_reduce(map, reduce) mapReduce.신규(컬렉션, 기준, map, reduce) end |
#pick(*fields) ⇒ 객체 | 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 값이 포함될 수 있습니다.
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
기준 선택기에 대해 데이터베이스 에서 두 번째 문서 가져옵니다.
612 613 614 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 612 def 초 retrieve_nth(1) end |
#초! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 두 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
626 627 628 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 626 def 두 번째! 초 || raise_document_not_Found_error end |
#second_to_last ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 의 마지막 문서에서 두 번째 문서 가져옵니다.
가 발견되었습니다.
710 711 712 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 710 def second_to_last retrieve_nth_to_last(1) end |
#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
제공된 수의 문서를 건너뜁니다.
465 466 467 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 465 def 건너뛰기(value) @view = 보기.건너뛰기(value) 개인정보 정책에 self end |
#sort(values = nil, &block) ⇒ 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>
데이터베이스에서 지정된 수의 문서를 가져옵니다.
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
데이터베이스에서 하나의 문서를 가져오고 문서가 없는 경우 오류를 발생시킵니다.
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 }
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
기준 선택기에 대해 데이터베이스 에서 세 번째 문서 가져옵니다.
636 637 638 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 636 def 세 번째 retrieve_nth(2) end |
#세 번째! ⇒ 문서
기준 선택기에 대해 데이터베이스 에서 세 번째 문서 가져오거나, 문서를 찾을 수 없는 경우 오류를 발생시킵니다.
650 651 652 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 650 def 세 번째! 세 번째 || raise_document_not_Found_error end |
#Third_to_last ⇒ 문서 | nil
기준 선택기에 대해 데이터베이스 의 마지막 문서에서 세 번째 문서 가져옵니다.
가 발견되었습니다.
736 737 738 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 736 def Third_to_last retrieve_nth_to_last(2) end |
#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
일치하는 첫 번째 문서 원자적으로 업데이트합니다.
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
일치하는 모든 문서를 원자적으로 업데이트합니다.
517 518 519 |
# 파일 'lib/mongoid/contextual/ Mongo.rb', 줄 517 def update_all(속성 = nil, opts = {}) update_documents(속성, :update_many, opts) end |