0

mongo java 驱动程序将 var args 用于聚合方法,我有一个 API,在其中$unwind动态创建对象并且其数量不固定。如何通过 Mongo Java 驱动程序聚合方法传递它,因为它需要单独传递每个对象。我尝试通过将所有$unwind对象放入 BasicDBList 并通过,但它失败了。有人可以帮我解决一些问题吗?

例子:

db.foo.aggregate({$unwind:items},{$unwind:item2})

,但这些展开可能会有所不同,因为它是在运行时创建的。

4

1 回答 1

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);
于 2013-08-03T10:51:08.857 回答