diff --git a/lib/plucky/query.rb b/lib/plucky/query.rb
index <HASH>..<HASH> 100644
--- a/lib/plucky/query.rb
+++ b/lib/plucky/query.rb
@@ -100,7 +100,9 @@ module Plucky
       end
 
       def count(opts={})
-        find_each(opts).count
+        query = clone.amend(opts)
+        cursor = query.collection.find(query.criteria.to_hash, query.options.to_hash)
+        cursor.count
       end
 
       def size
@@ -224,4 +226,4 @@ module Plucky
       clone.tap { |query| query.options[:fields] =  the_fields}
     end
   end
-end
\ No newline at end of file
+end
Ensure that count always uses a cursor and only does a count.

There are instances where MongoMapper loads every document in a cursor,
so using find_each caused every document that was counted to also be
loaded as an object.