对于给定的一组公司节点,我们正在尝试使用 Traversal API 仅检索提供产品节点列表中包含的所有产品的公司节点。之前使用 Cypher 的尝试效果不佳。在这个例子中:
Company 1 provides product A and B
Company 2 provides product A and B and C
Company 3 provides product A and C
如果所有 3 家公司都包含在公司列表查询中,并且产品 A 和 C 在查询的产品列表中,我们希望只返回公司 2 和 3,因为它们提供产品 A 和 C。这是我们的查询:
for ( Path position : Traversal.description()
.depthFirst()
.uniqueness(Uniqueness.NODE_GLOBAL)
.relationships(Rels.PROVIDES_PRODUCT, Direction.OUTGOING)
.evaluator((Evaluator) Evaluators.includeWhereEndNodeIs(productNodes))
.traverse(companyNodes))
如果我们使用 ,Evaluator.includeWhereEndNodeIs(productNodes)
我们将返回列表中提供任何产品的productNodes
所有公司(以上示例中的所有 3 家公司)。如果我们使用Evaluators.includeIfContainsAll(productNodes)
评估器,如果产品节点列表中有多个产品,我们将不会返回任何公司节点。
任何建议表示赞赏。