我最近更新到了最新的春季mongodb 1.10,以试用新的$graphLookup
聚合器。但是,我似乎无法为graphLookup
指定所有参数。
具体来说,我可以成功设置startWith
,connectFrom
和connectTo
,但是as
和maxDepth
似乎不可见。
这有效:
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);
}
};