-1

こんにちは、MongoDB の初心者です。最初に MapReduce メソッドと他の Aggregation メソッドの 2 つの手法を使用して、この SQL クエリを mongodb に変換する必要があります。誰かが助けてくれる?

select
    sum(l_extendedprice*l_discount) as revenue
from 
    lineitem
where 
    l_shipdate >= date '1994-01-01'
    and l_shipdate < date '1994-01-01' + interval '1' year
    and l_discount between 0.06 - 0.01 and 0.06 + 0.01
    and l_quantity < 24;
4

1 に答える 1

2

http://www.mongodb.org/display/DOCS/MapReduce

サンプルでは、​​map/reduce を使用します

var m = function () { emit(1, {this.l_extendedprice * this.l_discount})};

var r = function (k, vals) {
    var sum = 0;
    for (var i = 0; i < vals.length; i++) {
       sum += vals[i];
    }
    return sum;
}

var res = db.stuff.mapReduce(m, r,  {
                            out:"stuff_aggr",
                            query: { 
                                "l_shipdate": {$gte:  ISODate("1994-01-01T00:00:00.000Z")}, 
                                "l_shipdate": {$lte:  ISODate("1995-01-01T00:00:00.000Z")},
                                "l_discount": {$gte: 0.05}, 
                                "l_discount": {$lte: 0.07}, 
                                "l_quantity": {$lt: 24}
                            }
});

集計はまだベータ機能です。MapReduce は依然として優れたオプションです。複雑なwhere句を簡単に処理できるかどうかを確認したいと思っていると思います... 1つのコレクション/テーブルに制限している限り、SQLとそれほど違いはありません。

于 2012-07-05T13:37:24.610 に答える