2011-09-30 75 views
1

我有一個紅寶石的軌道3項目,其中我通過使用.limit(3)查詢一定數量的對象。然後,在我看來,我循環這些對象。之後,如果視圖中有3個對象,則顯示「加載更多」按鈕。下面是視圖代碼:MongoID是否爲.count(true)單獨查詢?

<% @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

我不這麼認爲,在一個月前有一個pull request可以爲:size,:length添加別名:count以避免重新運行查詢。你可以檢查。

+0

感謝您的鏈接,看起來像你是對的。非常感激! –