1
gremlin> g.V().filter{it.get().property('state').value() == 'A*'}

我正在使用 AWS Neptune GraphDB。我需要获取状态名称以“A”开头的顶点。你能帮我处理这些在 AWS Neptune gremlin 上工作的文本谓词吗?

{ TextConatinsPrefix(), TextPrefix(), Text.contains(), .matches(), .contains(), .startWith() 这些没有通过任何组合起作用}

4

3 回答 3

3

这可能取决于 Neptune 允许什么,但如果 Neptune 允许这些类型的 Lambda,以下是我书中的一些示例。

g.V().hasLabel('airport').
      filter{it.get().property('desc').value().contains('Dallas')}

// Using a filter to search using a regular expression
g.V().has('airport','type','airport').
      filter{it.get().property('city').
        value ==~/Dallas|Austin/}.values('code')

// A regular expression to find any airport with a city 
//name that begins with "Dal"

g.V().has('airport','type','airport').
    filter{it.get().property('city').value()==~/^Dal\w*/}.values('city')

如果您只需要startsWith 的行为,则可以避免使用Lambda:

g.V().hasLabel('airport').
      has('city',between('Dal','Dam')).
      values('city')

为了完整起见,这里是本书和相关材料的 URL(全部开源)https://github.com/krlawrence/graph

干杯开尔文

于 2018-05-26T15:22:17.930 回答
1

现在添加另一个答案是 2019 年,指出在 Apache TinkerPop 3.4 中引入了新的文本谓词。这些包括startingWith()、endingWith() 和containing() 以及它们的逆notStartingWith() 等。任何支持3.4 或更高级别的Apache TinkerPop 的图形数据库(包括Amazon Neptune)都应该提供这些谓词。

希望这有助于人们今天找到这个问题,因为原始问题来自 2018 年。

干杯开尔文

于 2019-09-01T23:17:14.413 回答
-1

谢谢开尔文。我得到了这个答案,它适用于 AWS-Neptune GDB

gremlin> g.V().values('state').filter{(''+it).startsWith('A')}

我们可以使用一些类似于文本谓词的java方法来代替startsWith()。

于 2018-06-01T10:12:17.470 回答