Map-reduce doc update for v1.8

This commit is contained in:
Kyle Banker 2011-02-23 14:43:23 -05:00
parent fa0a933780
commit 4f3937d6a4
2 changed files with 15 additions and 6 deletions

View File

@ -509,7 +509,7 @@ module Mongo
@db.command(cmd)['value'] @db.command(cmd)['value']
end end
# Perform a map/reduce operation on the current collection. # Perform a map-reduce operation on the current collection.
# #
# @param [String, BSON::Code] map a map function, written in JavaScript. # @param [String, BSON::Code] map a map function, written in JavaScript.
# @param [String, BSON::Code] reduce a reduce function, written in JavaScript. # @param [String, BSON::Code] reduce a reduce function, written in JavaScript.
@ -529,11 +529,13 @@ module Mongo
# @option opts [Boolean ] :verbose (false) if true, provides statistics on job execution time. # @option opts [Boolean ] :verbose (false) if true, provides statistics on job execution time.
# @option opts [Boolean] :raw (false) if true, return the raw result object from the map_reduce command, and not # @option opts [Boolean] :raw (false) if true, return the raw result object from the map_reduce command, and not
# the instantiated collection that's returned by default. Note if a collection name isn't returned in the # the instantiated collection that's returned by default. Note if a collection name isn't returned in the
# map-reduce output (as, for example, when using :out => {:inline => 1}), then this option will be # map-reduce output (as, for example, when using :out => {:inline => 1}), then you must specify this option
# forced to true. # or an ArgumentError will be raised.
# #
# @return [Collection, Hash] a Mongo::Collection object or a Hash with the map-reduce command's results. # @return [Collection, Hash] a Mongo::Collection object or a Hash with the map-reduce command's results.
# #
# @raise ArgumentError if you specify {:out => {:inline => true}} but don't specify :raw => true.
#
# @see http://www.mongodb.org/display/DOCS/MapReduce Offical MongoDB map/reduce documentation. # @see http://www.mongodb.org/display/DOCS/MapReduce Offical MongoDB map/reduce documentation.
# #
# @core mapreduce map_reduce-instance_method # @core mapreduce map_reduce-instance_method
@ -553,10 +555,13 @@ module Mongo
raise Mongo::OperationFailure, "map-reduce failed: #{result['errmsg']}" raise Mongo::OperationFailure, "map-reduce failed: #{result['errmsg']}"
end end
if raw || !result["result"] if raw
result result
else elsif result["result"]
@db[result["result"]] @db[result["result"]]
else
raise ArgumentError, "Could not instantiate collection from result. If you specified " +
"{:out => {:inline => true}}, then you must also specify :raw => true to get the results."
end end
end end
alias :mapreduce :map_reduce alias :mapreduce :map_reduce

View File

@ -485,7 +485,11 @@ class TestCollection < Test::Unit::TestCase
res = @@test.map_reduce(m, r, :out => {:reduce => output_collection}) res = @@test.map_reduce(m, r, :out => {:reduce => output_collection})
assert res.find.to_a.any? {|doc| doc["_id"] == 3 && doc["value"]["count"] == 2} assert res.find.to_a.any? {|doc| doc["_id"] == 3 && doc["value"]["count"] == 2}
res = @@test.map_reduce(m, r, :out => {:inline => 1}) assert_raise ArgumentError do
@@test.map_reduce(m, r, :out => {:inline => 1})
end
@@test.map_reduce(m, r, :raw => true, :out => {:inline => 1})
assert res["results"] assert res["results"]
end end
end end