0

我有一个执行快速执行的简单查询的操作,但由于某种原因,它还执行了一个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")

4

0 回答 0