使用mongoDB和Morphia映射Reduce

时间:2013-01-09 06:12:52

标签: java mongodb mapreduce morphia

我在使用morphia运行mongoDB中的map reduce,这是我的java代码

String map = "function() { emit(this.id,this.cal.charge)}";
String reduce = "function(k, v) {var i, sum = 0;for (i in v) {sum += v[i];}return sum;}";

MapreduceResults<Results> mrRes = ds.mapReduce(MapreduceType.MERGE,ds.createQuery(MyTable.class).field("id").equal(5),map,reduce,null,null,Re.class);   

这项工作正常并将结果放到'Re'集合中,但是如何在不插入新集合的情况下将结果作为对象或列表获取?

谢谢

1 个答案:

答案 0 :(得分:5)

我无法对此进行评论,因为它违反了长度限制。

如果不是太大惊小怪,你可以直接使用java驱动程序而不使用morphia接口。从morphia数据存储区获取mongo对象并使用java driver的map reduce命令;它是这样的:

DBObject queryObject = new BasicDBObject("id", 5);
DBCollection collection = ds.getCollection(MyTable.class);

MapReduceCommand mrc = new MapReduceCommand(collection, // collection to do map-reduce on
                                            map, // map function
                                            reduce, // reduce function
                                            null, // output collection for the result
                                            MapReduceCommand.OutputType.INLINE, // output result type
                                            queryObject); // query to use in map reduce function

btw morphia在github https://github.com/jmkgreen/morphia中有一个更新的版本。也许你也想检查一下。我看到新版本也不支持map-reduce上的内联操作。