如何在gremlin中触发匹配查询。使用Java驱动程序在Cosmos db中无法使用过滤器查询

时间:2018-09-17 08:36:26

标签: nosql azure-cosmosdb gremlin tinkerpop3

我有2条类似的问题陈述。我可以在其中都包含一个包含或类似的查询来解决我在gremlin中的问题:

1)当outE()(如下面的gremlin查询中所示)具有包含print的标签时,在以下查询中返回顶点“ a”。

gV()。hasLabel('url')。has('name','sw10707')。as('a')。outE('print')。has('forward','states')。 inV()。select('a')

2)返回如下所述的所有顶点,这些顶点的边缘标签中包含打印内容:

gV()。hasLabel('url')。has('name','sw10707')。as('a')。outE('print')。has('forward','states')。 inV()

此查询无效:  gV()。hasLabel('url')。has('name','sw10707')。as('a')。outE()。filter(it.name.matches('。 pri。'))

.net驱动程序已经存在一个问题(但是我无法使用Java找到类似的功能): https://github.com/Azure/azure-cosmosdb-dotnet/issues/473

1 个答案:

答案 0 :(得分:0)

此遍历:

C:\Program Files\Borland\Delphi7\Bin

需要g.V().hasLabel('url'). has('name','sw10707').as('a'). outE().filter(it.name.matches('.pri.')) 中的lambda表达式,并且应将其编写为Groovy闭包:

filter()

不幸的是,CosmosDB不支持lambda,因此您的遍历将失败。目前,我还没有一种解决方法,就是不返回边缘以在客户端上对其进行过滤,然后使用它们开始第二次遍历...这不是很好。希望您提出的问题能很快缓解。

请注意,我在此问题上发表评论,提到TinkerPop正在考虑使这些文本谓词可用-讨论为here