mongodb 中 mapReduce 有一部分value不經過reduce處理
大家讲道理
大家讲道理 2017-05-17 10:04:04
0
1
641

在mongodb 中 使用mapReduce 有一部分value不經過reduce處理,很是疑惑。先上程式碼

    db.test.mapReduce(
        function () {
            emit({
                host: this.host,
                os: this.os,
                computed_on_date: this.computed_on_date,
                uid: this.uid
            }, {data: this.os});
        },
        function (key, value) {
            return {result: 1};
        },
        {
            out: "a"
        }
    )

應該輸出的資料為

        "_id" : {
                "host" : "www.ddc.com",
                "os" : "android",
                "computed_on_date" : "2017-04-19",
                "uid" : "0ae71c7\ne-7da6-9051-ec6c-49dc671b4e3a"
        },
        "value" : {
                "result" : 1
        }

實際輸出資料為

      "_id" : {
                "host" : "www.ddc.com",
                "os" : "android",
                "computed_on_date" : "2017-04-19",
                "uid" : "0ae71c7\ne-7da6-9051-ec6c-49dc671b4e3a"
        },
        "value" : {
                "data" : "android"
        }

非常疑惑,在條件emit的key少於4個時候,會正常顯示,如果大於3個或加了query條件,就不會進行reduce處理。

另外有一個問題,mapReduce在有query時,是先處理query還是選處理reduce再在結果中處理query

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(1)
大家讲道理

建議使用aggregation來做。與MR比較,aggregation是MongoDB的first class的特性。

供參考。

Love MongoDB! Have fun!

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板