MongoDBで”too much data for sort() with no index”て出た

3月くらいから少しずーつ作っている自作のアクセス解析サイトですが、最近あんまり手を加えていないので延々とアクセスログだけ溜まっていく日々だったのですが、ひさしぶりにログを確認してみたら

Fatal error: Uncaught exception ‘MongoCursorException’ with message ‘localhost:*****: too much data for sort() with no index. add an index or specify a smaller limit’

っていうエラーが出てました。
このエラーは「アクセス数が多めのサイト」の「1ヶ月分」の「リファラ」を見る時だけ出たのですが、どげんかせんといかんなぁとは思ってるところ。

一応、対象カラムにはインデックスをつけてるハズなんですが・・・なんで「with no index.」とか出るんでしょ?

かと言ってlimitで数を制限してしまうとアクセス解析の意味が無いし・・・。

というわけでちょっと考え中。


[追記]
find()の後にチェーンメソッドでsort()を入れてたんですが、それを外したらエラー出なくなりました。

※PHP
$result = $collection->find($conf,$field)->sort(array("date"=>-1));

$result = $collection->find($conf,$field);

・・・なんで?(´・ω・`)

大阪の江坂でウェブ制作をしている、インフラもシステムもデザインもディレクションもできるエンジニア。 広く浅く薄っぺらくですが(笑)

Leave a reply:

Your email address will not be published.