gpt4 book ai didi

java - 如何使用java驱动程序将mongo mapreduce结果存储在不同的数据库中

转载 作者:行者123 更新时间:2023-11-30 04:18:16 25 4
gpt4 key购买 nike

下面的代码片段在 java 中使用时效果很好。但是 mongodb mapreduce 有没有办法使用 java 驱动程序将结果存储到不同的数据库中。我想实现这一点,因为 MapReduce 无法创建上限集合。所以我想将mapreduce的结果写入不同的集合,并在目标数据库中创建一个上限集合并插入到该集合中。

`MapReduceCommand wktgtcmd = new MapReduceCommand(tgtCollection, wk_map_function, tgt_reduce_function, 
"collection String", MapReduceCommand.OutputType.MERGE, null);
tgtCollection.mapReduce(wktgtcmd);`

诸如“数据库.Collection String”之类的东西或实现此目的的一些提示?

最佳答案

通常你可以调用MapReduceCommand.setOutputDB方法来告诉mapreduce命令使用哪个数据库。

但是,在从 mongo shell 进行快速测试后,看起来 mongodb 服务器会在集合上限时首先删除该集合。

如果您希望将结果放入上限集合中,那么最简单的方法是内联结果并手动将它们插入到上限集合中:

MapReduceCommand wktgtcmd = new MapReduceCommand(tgtCollection, 
wk_map_function,
tgt_reduce_function,
null,
MapReduceCommand.OutputType.INLINE,
null);
MapReduceOutput out = tgtCollection.mapReduce(cmd);


DB db = mongo.getDB("database");
DBCollection results = db.getCollection("collection");
for (DBObject o : out.results()) {
results.insert(o);
}

关于java - 如何使用java驱动程序将mongo mapreduce结果存储在不同的数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17802074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com