【发布时间】:2016-05-13 11:56:34
【问题描述】:
我正在使用spring批处理框架在mongo db中处理大量数据并再次存储在mongo db中
代码如下:
Aggregation agg = newAggregation(
project("field1")
//projection on few fields
group("field1")
//group opeartion
project(
// again project on grouped result
)
).withOptions(newAggregationOptions().allowDiskUse(true).build());
AggregationResults<BeanName> agreatiR = dbTemplate.aggregate(agg,collectionName,BeanName.class);
对于较少的数据(我已经在 100k 上进行了测试),聚合框架工作正常,但对于 2M,它给出了超过 16 MB 限制的例外情况。
我不想使用 $out 操作,因为首先它不是必需的,而且似乎没有任何 API 可以在 spring data mongo 中使用 $out
我也读过返回游标,这将允许超出大小限制,但似乎没有任何 Spring Data mongo API 支持它。
Mongo DB 版本:2.6
Mongo 驱动版本:3.2.0
【问题讨论】:
-
对于大型集合,请尝试将您的处理拆分为 100k 条记录以使其正常工作。
-
我希望能找到一个解决方案,在不拆分的情况下处理相同的数据
-
你能提供itemprocessor的代码吗?您一次处理多少数据?
-
我上面提到的代码是Tasklet中的代码。我正在处理 2M 数据
标签: java spring mongodb spring-data-mongodb mongo-java-driver