gremlin> g.V().filter{it.get().property('state').value() == 'A*'}
我正在使用AWS Neptune GraphDB。我需要得到状态名称以' A'开头的顶点。你可以帮我解决这些文本谓词,它适用于AWS Neptune gremlin。
{TextConatinsPrefix(),TextPrefix(),Text.contains(),. match(),. enctains(),. startWith()这些没有通过任何组合工作}
答案 0 :(得分:2)
这可能取决于海王星允许的内容,但是如果海王星允许使用这些类型的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:
的行为,你可以避免使用Lambdasg.V().hasLabel('airport').
has('city',between('Dal','Dam')).
values('city')
为了完整起见,这里是该书及相关材料的URL(所有开源)https://github.com/krlawrence/graph
干杯 开尔文
答案 1 :(得分:0)
现在要在2019年添加另一个答案,以指出在Apache TinkerPop 3.4中引入了新的文本谓词。这些包括startingWith(),EndingWith()和contains()以及它们的逆数notStartingWith()等。任何支持3.4或更高级别的Apache TinkerPop的图形数据库(包括Amazon Neptune)都应提供这些谓词。
希望这可以帮助人们今天找到这个问题,因为原来是2018年的。
欢呼 开尔文
答案 2 :(得分:-1)
谢谢凯文。 我得到了这个答案,它与AWS-Neptune GDB一起正常工作
gremlin> g.V().values('state').filter{(''+it).startsWith('A')}
而不是startsWith(),我们可以使用一些类似于文本谓词的java方法。