Merge pull request #44 from pto/master

Allow drop_dups on ensure_index as well as on create_index
This commit is contained in:
Kyle Banker 2011-05-25 13:26:50 -07:00
commit 408fbc1b72
2 changed files with 9 additions and 2 deletions

View File

@ -163,8 +163,6 @@ module Mongo
# This is to prevent any inadvertant failure to close the cursor, as the cursor is explicitly # This is to prevent any inadvertant failure to close the cursor, as the cursor is explicitly
# closed when block code finishes. # closed when block code finishes.
# @option opts [Integer] :max_scan (nil) Limit the number of items to scan on both collection scans and indexed queries.. # @option opts [Integer] :max_scan (nil) Limit the number of items to scan on both collection scans and indexed queries..
# @option opts [Boolean] :show_disk_loc (false) Return the disk location of each query result (for debugging).
# @option opts [Boolean] :return_key (false) Return the index key used to obtain the result (for debugging).
# @option opts [Block] :transformer (nil) a block for tranforming returned documents. # @option opts [Block] :transformer (nil) a block for tranforming returned documents.
# This is normally used by object mappers to convert each returned document to an instance of a class. # This is normally used by object mappers to convert each returned document to an instance of a class.
# #
@ -470,6 +468,7 @@ module Mongo
# @return [String] the name of the index. # @return [String] the name of the index.
def ensure_index(spec, opts={}) def ensure_index(spec, opts={})
now = Time.now.utc.to_i now = Time.now.utc.to_i
opts[:dropDups] = opts[:drop_dups] if opts[:drop_dups]
field_spec = parse_index_spec(spec) field_spec = parse_index_spec(spec)
name = opts[:name] || generate_index_name(field_spec) name = opts[:name] || generate_index_name(field_spec)

View File

@ -809,6 +809,14 @@ class TestCollection < Test::Unit::TestCase
assert_equal 1, @collection.find({:a => 1}).count assert_equal 1, @collection.find({:a => 1}).count
end end
should "drop duplicates with ensure_index and drop_dups key" do
@collection.insert({:a => 1})
@collection.insert({:a => 1})
assert_equal 2, @collection.find({:a => 1}).count
@collection.ensure_index([['a', Mongo::ASCENDING]], :unique => true, :drop_dups => true)
assert_equal 1, @collection.find({:a => 1}).count
end
should "create an index in the background" do should "create an index in the background" do
if @@version > '1.3.1' if @@version > '1.3.1'
@collection.create_index([['b', Mongo::ASCENDING]], :background => true) @collection.create_index([['b', Mongo::ASCENDING]], :background => true)