이 질문은보다 간단한 설명과 함께 업데이트됩니다.몽고이에서 몽고로의 질의 번역
내 데이터의 경우 다음 Mongo CLI 쿼리에는 208ms가 걸립니다. 이 쿼리는 18 개의 요청 된 개체에 대한 모든 데이터를 검색합니다.
db.videos.find ({avg_rating : {$ gt : 1}, poster_large_thumb : {$ exists : true}, release_date : {$ lte : ISODate ("2000-12-31")}}) sort ({출시일 : -1, AVG_RATING : -1, 제목 : 1}). (30)으로 제한 할을 (18) .pretty() 건너 뛸 설명() Mongoid와 그러나
{
"cursor" : "BasicCursor",
"nscanned" : 76112,
"nscannedObjects" : 76112,
"n" : 48,
"scanAndOrder" : true,
"millis" : 208,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
}
}
를 내가 쿼리를 수행 할 때. 실제 데이터가없는 기준 오브젝트를 작성합니다. 이 기준을 반복하여 JSON 데이터 구조를 만드는 메소드에이 기준을 전달합니다. 데이터가 필요하기 때문에 각 객체는 DB에서 검색되어야합니다. 검색어를 반환하는 기준은 다음과 같습니다.
@videos = Video.order_by (release_date : -1, avg_rating : -1, title : 1) .where (: avg_rating.gt => 1, : poster_large_thumb.exists => 1 , : release_date.lte => start_date) .skip (skip * POSTERS_PER_ROW). 제한 (POSTERS_PER_ROW)
@videos를 반복 할 때 각 객체는 DB에서 검색하는 데 240ms 이상 걸립니다.
Getting one object:
2013-12-18 00:43:52 UTC
2013-12-18 00:43:52 UTC
0.24489331245422363
어떻게 개별적으로 각각의 객체를 얻는 대신 한 쿼리에서 검색을 수행하도록 강제 할 수 있습니다 나는 Video.order_by의 모든 데이터를 가지고있는 경우 (...)가 208ms 걸릴 것 쿼리 것을 이것을 합계 가정?
여기 뭔가가 전체 검색을 Mongo CLI보다 몇 배 이상 더 많이받는 원인이됩니다.
당신의 mongod 로그는 100ms보다 오래 걸리는 모든 쿼리를 기록 할 것입니다 - 당신은 그 모습을 볼 수 있습니다. –