"이미지"라는 MongoDB 컬렉션과 해당 "이미지"모델이있는 MongoMapper 기반의 애플리케이션이 있다고 가정 해 보겠습니다. 에 의해,MongoMapper Plucky :: Query 개체에서 원시 Mongo 데이터 결과를 얻는 방법?
>> Image.where(:file_type => 'image/jpeg').class
=> Plucky::Query
>> Image.where(:file_type => 'image/jpeg').first.class
=> Image
우리는 대부분 MongoMapper을 우회 몽고 어댑터에 직접 해당 쿼리를 실행할 수 있습니다 우리가이 모델을 사용하여 MongoMapper 쿼리를 설정 한 경우, 우리는 유형 Image
의 유형 Plucky::Query
반환 결과의 것을 볼 수 MongoMapper.connection
에 액세스하십시오. 우리가 이런 식으로 할 경우 쿼리 유형 Mongo::Cursor
이며 유형 BSON::OrderedHash
의 원시 데이터 결과를 반환
>> MongoMapper.connection.db(dbname).collection('images').find({ :file_type => 'image/jpeg' }).class
=> Mongo::Cursor
>> MongoMapper.connection.db(dbname).collection('images').find({ :file_type => 'image/jpeg' }).first.class
=> BSON::OrderedHash
, 위의 같은 Plucky::Query
을 가지고로 변환하는 방법이 (또는 검색 그것으로부터) 기본적인, 확장되지 않은 Mongo::Cursor
객체?
>> Image.where(:file_type => 'image/jpeg').find_each.class
=> Mongo::Cursor
그러나이 Mongo::Cursor
어떻게 든 확장 또는 위의 하나 때문에에서 다른 다릅니다 밝혀 :
는 처음에 내가 실제로 Plucky::Query
을하고 Mongo::Cursor
을 반환하지 find_each
와 솔루션을 찾을 생각
>> Image.where(:file_type => 'image/jpeg').find_each.first.class
=> Image
업데이트 : 여전히 Image
객체 대신 BSON::OrderHash
오브젝트를 돌려 나는 단순히 MongoMapper 쿼리 마법 알토을 무시할 수 없습니다 gether 내가 MongoMapper (구체적으로 이름이 지정된 스코프)의 기능에 액세스하여 쿼리를 작성해야하기 때문에 두 번째 경우에서했던 것처럼, 결국 내가 Plucky::Query
입니다. 그러나 필요한 것은 데이터 뿐이므로 모델 인스턴스가 아닌 오버 헤드를 원하지 않기 때문에 모델이 아닌 일반 데이터 객체를 결과로 원합니다.
고맙지 만 MongoMapper의 기능을 사용하여 원본 쿼리를 작성하기 때문에 필자의 경우에는 작동하지 않습니다. 나는이 점을 상세히 설명하기 위해 나의 질문을 업데이트한다. –