2011-09-30 2 views
1

J'ai un projet ruby ​​on rails 3 dans lequel je demande un certain nombre d'objets en utilisant un .limit (3). Ensuite, à mon avis, je parcours ces objets. Après cela, s'il y a 3 objets dans la vue, j'affiche un bouton "charger plus". Voici le code de la vue:MongoID fait une requête distincte pour .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 %> 

Le size(true) est passé un booléen pour faire en sorte que MongoId tient compte de la .limit et .Offset sur ma requête (sinon il retourne le nombre total d'objets qui correspondent, quelle que soit la limite/décalage). Voici les lignes du journal de développement pertinentes:

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}) 

Ma question est: ne MongoId une requête séparée, pour mon @objects.size(true)? J'imagine que le ['$cmd'] pourrait indiquer le contraire, mais je ne suis pas sûr.

Répondre

1

Je ne pense pas, il y avait un pull request mois pour ajouter des alias pour: taille,: longueur à: compte pour éviter les réexécutions. Vous pouvez vérifier cela.

+0

Merci pour le lien, on dirait que vous aviez raison. Très appréciée! –