0

誰でも私を助けることができます.このコレクションをmapreduceに作成するための私のブレインスタッキング、「年」によるキーを使用して、PurchaseAmount、PurchaseReturnAmount、およびTotalAmountを取得する方法.

{
    "_id" : {
            "OwnerId" : "coba@aja.com",
            "SupplierId" : BinData(3,"AYC8In8bFkGYNx34poQLlg=="),
            "GroupId" : BinData(3,"mzWBCilngEGd72YpeyijcQ=="),
            "ProductId" : BinData(3,"gZ2g/syue06v8b88+0pqRA=="),
            "Date" : ISODate("2013-01-15T00:00:00Z")
    },
    "value" : {
            "OwnerId" : "oetawan@dokuku.com",
            "Date" : ISODate("2013-01-15T00:00:00Z"),
            "SupplierId" : BinData(3,"AYC8In8bFkGYNx34poQLlg=="),
            "SupplierName" : "Matahari",
            "GroupId" : BinData(3,"mzWBCilngEGd72YpeyijcQ=="),
            "GroupCode" : "Umum",
            "GroupName" : "Umum",
            "ProductId" : BinData(3,"gZ2g/syue06v8b88+0pqRA=="),
            "ProductCode" : null,
            "ProductBarcode" : "IPAD2",
            "ProductName" : "iPad 2",
            "PurchaseAmount" : 19500000,
            "PurchaseReturnAmount" : 0,
            "TotalAmount" : 19500000
    }

私はこのマップをC#に還元したい

4

1 に答える 1

0

MR を使用したシェルの例を次に示します。もちろん、集約フレームワークを使用して実行することもできますが、おそらくこれをバックグラウンドで実行する必要があります。

db.so.mapReduce(
        function () { /* map */
            var key = this._id.Date.getFullYear();
            emit(key, { PurchaseAmount:this.value.PurchaseAmount, PurchaseReturnAmount:this.value.PurchaseReturnAmount, TotalAmount:this.value.TotalAmount } );
        }, 
        function (key, array) { /* reduce*/
            var result = { PurchaseAmount: 0, PurchaseReturnAmount: 0, TotalAmount: 0 };
            for (var i = 0; i < array.length; i++) {
                {
                    result.PurchaseAmount += array[i].PurchaseAmount;
                    result.PurchaseReturnAmount += array[i].PurchaseReturnAmount;
                    result.TotalAmount += array[i].TotalAmount;
                }
            }
            return result;
        },
        {
            out: "so_mr_example",
            query:{}
        }
);

db.so_mr_example.find();

次のようなものを生成します。

{ "_id" : 2013, "value" : { "PurchaseAmount" : 39000000, "PurchaseReturnAmount" : 0, "TotalAmount" : 39000000 } }
{ "_id" : 2014, "value" : { "PurchaseAmount" : 19500000, "PurchaseReturnAmount" : 0, "TotalAmount" : 19500000 } }   
于 2013-01-16T13:53:46.223 に答える