我想编写一个通用代码,如果查询需要,将创建聚合,具体取决于我从API调用中获得的过滤器。
因此,例如,我可能会为start_time字段创建“匹配”聚合,但有时我不会。
我的问题是,在调用collection.aggregate(...)
时,我需要知道我想要调用多少以及哪些聚合。
有没有办法动态地做到这一点?
我尝试传递'null'或清空DBObject但以异常结束。
答案 0 :(得分:1)
方法DBCollection#aggregate(DBObject, DBObject...)
接受可变数量的聚合选项,因此可以传递数组。
DBObject firstOp = ...;
DBObject[] otherOps = ...;
AggregationOutput result = collection.aggregate(firstOp, otherOps);
请注意,第一个参数是一个操作,因此数组必须从操作#2开始。