我在使用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'集合中,但是如何在不插入新集合的情况下将结果作为对象或列表获取?
谢谢
答案 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上的内联操作。