class EM::Mongo::Collection
def afind_one(spec_or_object_id=nil, opts={})
def afind_one(spec_or_object_id=nil, opts={}) spec = case spec_or_object_id when nil {} when BSON::ObjectId {:_id => spec_or_object_id} when Hash spec_or_object_id else raise TypeError, "spec_or_object_id must be an instance of ObjectId or Hash, or nil" end afind(spec, opts.merge(:limit => -1)).next_document end
def afirst(selector={}, opts={}, &blk)
def afirst(selector={}, opts={}, &blk) opts[:limit] = 1 afind(selector, opts) do |res| yield res.first end end
def find(*args)
def find(*args) f = Fiber.current cursor = afind(*args) cursor.to_a.callback{ |res| f.resume(res) } Fiber.yield end
def find(selector={}, opts={})
def find(selector={}, opts={}) f = Fiber.current cb = proc { |res| f.resume(res) } skip = opts.delete(:skip) || 0 limit = opts.delete(:limit) || 0 order = opts.delete(:order) @connection.find(@name, skip, limit, order, selector, nil, &cb) Fiber.yield end
def find_one(selector={}, opts={})
def find_one(selector={}, opts={}) opts[:limit] = 1 find(selector, opts).first end
def first(selector={}, opts={})
def first(selector={}, opts={}) opts[:limit] = 1 find(selector, opts).first end