Eu descobri o motivo e meu novo código é
# Map function which emits the two necessary fileds like key and value to perform our operations
map = "function(){" +
"emit(this.cust_id,this.amount);" +
"}; "
# Reduce function reduces the values as per logic and outputs with key and value
reduce = "function(key,values){" +
"return Array.sum(values);" +
"}"
# Check this link fore reference :- http://www.rubydoc.info/github/mongodb/mongo-ruby-driver/master/Mongo/Collection:map_reduce
# a customizable set of options to perform map reduce functions
opts = {
:query =>
{
"status" => "S"
},
# out specifies where we need to output the map reduce output.
# if we specify simply a name in string like "order_totals" it creates a collection in that name
# and stores in that
# if we need to store in a temp memory and needed as output we need to give {:inline => 1} ans
# :raw => true
# check link :- http://docs.mongodb.org/manual/reference/command/mapReduce/#mapreduce-out-cmd
:out => {:inline => 1},
:raw => true
}
result = COLLECTION_MAPREDUCE.map_reduce(map,reduce,opts)
result["results"].each do |obj|
puts obj
puts "\n ------------"
end
Em opts eu preciso dar o out e raw.i tenho do link aqui
Este código está funcionando bem. Obrigado.