0

对 Mongodb 和 MapReduce 来说非常新,但我喜欢我可以用它做的事情,并且大部分时间都可以。但是,我无法将 MapReduce 的结果导出到 CSV。

这就是我正在做的事情:

var mapFunction1 = function() {
                       emit({isrc: this.isrc, country: this.country}, this.amount_payable);
                   };


var reduceFunction1 = function(keyIsrc, valuesAmountPayable) {
                        return Array.sum(valuesAmountPayable);
                    };

db.sales.mapReduce(
        mapFunction1,
        reduceFunction1,
            { out: "sales_with_total_by_country_and_isrc" }
                )

db.sales_with_total_by_country_and_isrc.find()

当我运行上面的查找时,我可以看到我想要的结果,ISRC、国家和价值观都存在。

我正在按如下方式运行我的导出,正如我所说,这运行正常,所有列都存在,但我只有 value 列中的值,而不是 ISRC 或 Country。

mongoexport --csv -d test -c sales_with_total_by_country_and_isrc -q '{value: {$ne: 0}}' -f "isrc","country","value" -o sales_with_total_by_country_and_isrc.csv

我究竟做错了什么?据我所知,我正在以正确的方式使用 -f 传递我想要导出的字段。

提前致谢。

4

1 回答 1

0

好的,我自己解决了这个问题。

因为,生成的集合看起来像:

{ "_id" : { "isrc" : "", "country" : "AE" }, "value" : 0.391081 }

我只需要拨打-f "_id.isrc","_id.country","value"我的 mongoexport 电话。

希望这可以帮助其他一些人。

于 2013-04-12T10:50:52.543 回答