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'集合中,但是如何在不插入新集合的情况下将结果作为对象或列表获取?
谢谢
我无法对此进行评论,因为它违反了长度限制.
如果它不会太大惊小怪,你可以直接使用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上的内联操作.
归档时间: |
|
查看次数: |
2240 次 |
最近记录: |