我有一个执行快速执行的简单查询的操作,但由于某种原因,它还执行了一个count()
我没有要求的命令:
在控制器中:
@things = Thing.active.where(city: "New York", state: "New York).limit(10).desc(:qs)
在日志中:
MOPED: 127.0.0.1:27017 QUERY database=dirot_development collection=things selector={"$query"=>{"status"=>"available", "city"=>"New York", "state"=>"New York"}, "$orderby"=>{"qs"=>-1}} flags=[:slave_ok] limit=10 skip=0 fields=nil (3.8438ms)
MOPED: 127.0.0.1:27017 KILL_CURSORS cursor_ids=[3455573564096875000] (0.0620ms)
MOPED: 127.0.0.1:27017 COMMAND database=dirot_development command={:count=>"things", :query=>{"status"=>"available", "city"=>"New York", "state"=>"New York"}} (378.4430ms)
从日志中可以看出,计数需要378 毫秒,而实际获取我想要的 10 个文档只需要4 毫秒。我怎样才能消除计数?
我正在使用 will_paginate,但不在此特定操作/视图中。
有任何想法吗?
* 更新 *
Active 只是一个标准范围:scope :active, where(status: "available")