Class: MongoFe::MongoDB::SearchDocuments
- Inherits:
-
Object
- Object
- MongoFe::MongoDB::SearchDocuments
- Defined in:
- lib/mongo_fe.rb
Instance Method Summary collapse
-
#initialize(a_db, a_collection) ⇒ SearchDocuments
constructor
A new instance of SearchDocuments.
- #list(user_query, page = 1, per_page = 10) ⇒ Object
Constructor Details
#initialize(a_db, a_collection) ⇒ SearchDocuments
Returns a new instance of SearchDocuments.
41 42 43 44 |
# File 'lib/mongo_fe.rb', line 41 def initialize(a_db, a_collection) @db=a_db @collection=a_collection end |
Instance Method Details
#list(user_query, page = 1, per_page = 10) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/mongo_fe.rb', line 46 def list(user_query, page=1, per_page=10) page_nr = page > 0 ? page : 1 query = user_query.nil? ? [{}, [], []] : user_query q = query.first.dup # verify if we have query containing a regexp q.each_pair do |k, v| if v.is_a?(String) && v.index(/^\//) q[k] = Regexp.new(v.gsub("/", '')) end end # quickly find the total hits count = @db.collection(@collection.name).find(q).count # get the docs and paginate. documents_list = WillPaginate::Collection.create(page_nr, per_page, count) do |pager| results = @collection.find( q, :sort => sort_by(query.last), :skip => ((page_nr-1) * per_page).to_i, :limit => per_page, :fields => just_these_fields(query[1]) ).to_a pager.replace(results) end [count, documents_list] end |