find_one takes same options as find
This commit is contained in:
parent
28a80f1b5e
commit
402b895385
@ -98,7 +98,8 @@ module XGen
|
|||||||
# present for a document to be included in the result set OR an
|
# present for a document to be included in the result set OR an
|
||||||
# instance of ObjectID to be used as the value for an _id query.
|
# instance of ObjectID to be used as the value for an _id query.
|
||||||
# if nil an empty spec, {}, will be used.
|
# if nil an empty spec, {}, will be used.
|
||||||
def find_one(spec_or_object_id=nil)
|
# :options :: options, as passed to Collection#find
|
||||||
|
def find_one(spec_or_object_id=nil, options={})
|
||||||
spec = case spec_or_object_id
|
spec = case spec_or_object_id
|
||||||
when nil
|
when nil
|
||||||
{}
|
{}
|
||||||
@ -109,7 +110,7 @@ module XGen
|
|||||||
else
|
else
|
||||||
raise TypeError, "spec_or_object_id must be an instance of ObjectID or Hash, or nil"
|
raise TypeError, "spec_or_object_id must be an instance of ObjectID or Hash, or nil"
|
||||||
end
|
end
|
||||||
find(spec, :limit => -1).next_object
|
find(spec, options.merge(:limit => -1)).next_object
|
||||||
end
|
end
|
||||||
|
|
||||||
# DEPRECATED - use find_one instead
|
# DEPRECATED - use find_one instead
|
||||||
@ -117,10 +118,7 @@ module XGen
|
|||||||
# Find the first record that matches +selector+. See #find.
|
# Find the first record that matches +selector+. See #find.
|
||||||
def find_first(selector={}, options={})
|
def find_first(selector={}, options={})
|
||||||
warn "Collection#find_first is deprecated and will be removed. Please use Collection#find_one instead."
|
warn "Collection#find_first is deprecated and will be removed. Please use Collection#find_one instead."
|
||||||
h = options.dup
|
find_one(selector, options)
|
||||||
h[:limit] = 1
|
|
||||||
cursor = find(selector, h)
|
|
||||||
cursor.next_object # don't need to explicitly close b/c of limit
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Save a document in this collection.
|
# Save a document in this collection.
|
||||||
|
@ -88,7 +88,7 @@ class TestCollection < Test::Unit::TestCase
|
|||||||
end
|
end
|
||||||
|
|
||||||
def test_find_one
|
def test_find_one
|
||||||
id = @@test.save("hello" => "world")
|
id = @@test.save("hello" => "world", "foo" => "bar")
|
||||||
|
|
||||||
assert_equal "world", @@test.find_one()["hello"]
|
assert_equal "world", @@test.find_one()["hello"]
|
||||||
assert_equal @@test.find_one(id), @@test.find_one()
|
assert_equal @@test.find_one(id), @@test.find_one()
|
||||||
@ -97,6 +97,9 @@ class TestCollection < Test::Unit::TestCase
|
|||||||
assert_equal @@test.find_one("hello" => "world"), @@test.find_one()
|
assert_equal @@test.find_one("hello" => "world"), @@test.find_one()
|
||||||
assert_equal @@test.find_one(OrderedHash["hello", "world"]), @@test.find_one()
|
assert_equal @@test.find_one(OrderedHash["hello", "world"]), @@test.find_one()
|
||||||
|
|
||||||
|
assert @@test.find_one(nil, :fields => ["hello"]).include?("hello")
|
||||||
|
assert !@@test.find_one(nil, :fields => ["foo"]).include?("hello")
|
||||||
|
|
||||||
assert_equal nil, @@test.find_one("hello" => "foo")
|
assert_equal nil, @@test.find_one("hello" => "foo")
|
||||||
assert_equal nil, @@test.find_one(OrderedHash["hello", "foo"])
|
assert_equal nil, @@test.find_one(OrderedHash["hello", "foo"])
|
||||||
assert_equal nil, @@test.find_one(ObjectID.new)
|
assert_equal nil, @@test.find_one(ObjectID.new)
|
||||||
|
Loading…
Reference in New Issue
Block a user