mongo java驱动程序采用var args进行聚合方法,我有一个API,其中$unwind
个对象是动态创建的,其数量不固定。我如何通过Mongo Java驱动程序聚合方法传递它,因为它需要单独传递每个对象。我尝试将所有$unwind
对象传递给BasicDBList并传递,但它失败了。有人可以帮我解决一些问题吗?
示例:
db.foo.aggregate({$unwind:items},{$unwind:item2})
,但这些展开可能会因为在运行时创建而有所不同。
答案 0 :(得分:0)
您不需要创建BasicDBList。这是它的工作原理:
List<DBObject> unwindItems = new ArrayList<>();
if(<item2 is not null>){ //pseudo code
DBObject unwindItem1 = new BasicDBObject("$unwind", "$item1");
unwindItems.add(unwindItem1);
}
if(<item2 is not null>){ //pseudo code
DBObject unwindItem2 = new BasicDBObject("$unwind", "$item2");
unwindItems.add(unwindItem2);
}
//add any other dbObject in the list, it need not be an unwind operation, it could be match, project, group etc.
DBObject command = new BasicDBObject("aggregate", "foo");
command.put("pipeline", dbObjects);