【发布时间】:2021-07-14 14:25:11
【问题描述】:
我有一个遵循这种模式的 gremlin 查询:
g.V().has('LOCATION', textContains('FLORIDA')).
repeat(bothE().otherV().simplePath()).emit().times(5).
has('LOCATION',textContains('VIRGINIA')).
path().by(valueMap('LOCATION')).dedup()
输出可能如下所示:
FLORIDA-->ALABAMA-->TENNESSEE-->VIRGINIA
FLORIDA-->GEORGIA-->TENNESSEE-->VIRGINIA
FLORIDA-->GEORGIA-->SOUTH CAROLINA-->NORTH CAROLINA-->VIRGINIA
etc...
有没有办法在路径步骤之后过滤以仅获取通过 ALABAMA 的路线(例如)。 ALABAMA 可能也不总是第二跳,因此它需要足够动态以查看整个路径,而不管包含的状态可能落在哪里。另一个问题是可能有多个状态需要过滤,例如向我展示包含 ALABAMA 或包含 SOUTH CAROLINA 等的路径。在此查询的实际应用中,valueMap() 中也有多个属性,但只是试图在这里简化它。这可能类似于这个问题:
但我不知道如何在过滤步骤之后返回 valueMap() 而不会出现错误。我尝试过这样的事情,但不确定从这里去哪里:
g.V().has('LOCATION', textContains('FLORIDA')).
repeat(bothE().otherV().simplePath()).emit().times(5).
has('LOCATION',textContains('VIRGINIA')).
path().filter(unfold().has('LOCATION', textContains('ALABAMA'))).
by(valueMap('LOCATION')).dedup()
【问题讨论】: