sql >> データベース >  >> NoSQL >> MongoDB

mongodbrubyネイティブドライバーのMapreduce

    私はその理由を理解し、私の新しいコードは

    # 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
    

    オプトでは、私はアウトとrawを与える必要があります。私はリンクから取得しましたここ

    このコードは正常に機能しています。ありがとうございます。




    1. 複数のフィールドでの並べ替えmongoDB

    2. PHPを使用してMongoDBのドキュメント内にデータを追加する

    3. MongoDBでネストされたドキュメントを再帰的にトラバースする方法

    4. キーへのMongoDB集約グループ配列:合計値