使用mongoDB和Morphia映射Reduce

use*_*690 0 java mapreduce mongodb 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);   
Run Code Online (Sandbox Code Playgroud)

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

谢谢

cub*_*buk 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
Run Code Online (Sandbox Code Playgroud)

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