MongoID是否对.count(true)执行单独查询?

时间:2011-09-30 00:18:27

标签: ruby-on-rails-3 mongodb mongoid

我在rails 3项目上有一个ruby,我在其中使用.limit(3)查询一定数量的对象。然后,在我看来,我循环遍历这些对象。之后,如果视图中有3个对象,我会显示“加载更多”按钮。这是视图代码:

<% @objects.each do |object| %>
  <%= render object._type.pluralize.underscore + '/teaser', :object => object %>
<% end %>
<% if @objects.size(true) == 3 %>
  #load more link here
<% end %>

size(true)传递一个布尔值,以确保mongoID考虑我的查询中的.limit和.offset(否则它返回匹配的对象总数,无论限制/偏移如何)。以下是相关的开发日志行:

MONGODB project_development['system.indexes'].insert([{:name=>"_public_id_1", :ns=>"project_development.objects", :key=>{"_public_id"=>1}, :unique=>true}])
MONGODB project_development['objects'].find({:deleted_at=>{"$exists"=>false}}).limit(3).sort([[:created_at, :desc]])
#some rendering of views
MONGODB project_development['system.indexes'].insert([{:name=>"_public_id_1", :ns=>"project_development.objects", :key=>{"_public_id"=>1}, :unique=>true}])
MONGODB project_development['$cmd'].find({"count"=>"objects", "query"=>{:deleted_at=>{"$exists"=>false}}, "limit"=>3, "fields"=>nil})

我的问题是:MongoID是否对我的@objects.size(true)单独进行查询?我想['$cmd']可能表示不同,但我不确定。

1 个答案:

答案 0 :(得分:1)

我不这么认为,有一个pull request个月前为以下内容添加别名:size,:length to:count以避免重新运行查询。你可以检查一下。