处理未知数量的聚合操作

时间:2013-11-19 08:17:27

标签: java mongodb

我想编写一个通用代码,如果查询需要,将创建聚合,具体取决于我从API调用中获得的过滤器。

因此,例如,我可能会为start_time字段创建“匹配”聚合,但有时我不会。

我的问题是,在调用collection.aggregate(...)时,我需要知道我想要调用多少以及哪些聚合。

有没有办法动态地做到这一点?

我尝试传递'null'或清空DBObject但以异常结束。

1 个答案:

答案 0 :(得分:1)

方法DBCollection#aggregate(DBObject, DBObject...)接受可变数量的聚合选项,因此可以传递数组。

DBObject firstOp = ...;
DBObject[] otherOps = ...;
AggregationOutput result = collection.aggregate(firstOp, otherOps);

请注意,第一个参数是一个操作,因此数组必须从操作#2开始。