0

morphiaを使用してmongoDBでmapreduceを実行しています。これは私の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」コレクションに入れますが、新しいコレクションに挿入せずにオブジェクトまたはリストとして結果を取得するにはどうすればよいですか?

ありがとう

4

1 に答える 1

5

長さの制限に違反しているため、コメントできませんでした。

面倒でなければ、morphia インターフェースを使わずに直接 Java ドライバを使って行うこともできます。morphia データストアから mongo オブジェクトを取得し、Java ドライバーの 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

ところで、morphia は github に新しいバージョンがあります https://github.com/jmkgreen/morphiaもチェックしてみてください。新しいバージョンも map-reduce でのインライン操作をサポートしていないことがわかりました。

于 2013-01-09T11:37:24.197 に答える