我最近更新到了最新的春季mongodb 1.10,以试用新的$graphLookup聚合器。但是,我似乎无法为graphLookup指定所有参数。

具体来说,我可以成功设置startWithconnectFromconnectTo,但是asmaxDepth似乎不可见。

这有效:

Aggregation.graphLookup("relationships")
        .startWith("destination")
        .connectFrom("destination")
        .connectTo("source")
    ;


这不是:

Aggregation.graphLookup("relationships")
        .startWith("destination")
        .connectFrom("destination")
        .connectTo("source")
        .maxDepth("2")
        .as("relationshipGraph")
    ;


查看spring源代码,似乎connectTo GraphLookupOperationBuilder返回的类是静态的并且是最终的。

还有另一种设置maxDepth的方法,或者这是一个错误吗?

最佳答案

该版本仍是候选版本,但看起来像是个错误。您可以使用以下使用AggregationOperation的变通办法,它使您可以创建聚合管道。

 AggregationOperation aggregation = new AggregationOperation() {
            @Override
            public DBObject toDBObject(AggregationOperationContext aggregationOperationContext) {
                DBObject graphLookup = new BasicDBObject(
                                "from", "relationships"). append(
                                "startWith", "$destination").append(
                                "connectFromField", "destination").append(
                                "connectToField", "source").append(
                                "maxDepth", 2).append(
                                "as", "relationshipGraph");
                return new BasicDBObject("$graphLookup", graphLookup);
            }
        };

10-08 13:41