Nosql 如何在gremlin中启动匹配查询。使用java驱动程序的cosmos db中的筛选器查询不起作用

Nosql 如何在gremlin中启动匹配查询。使用java驱动程序的cosmos db中的筛选器查询不起作用,nosql,azure-cosmosdb,gremlin,tinkerpop3,Nosql,Azure Cosmosdb,Gremlin,Tinkerpop3,我有两个类似方法的问题陈述。我是否可以在这两个问题陈述中都添加一个contains或like查询来解决我在gremlin中的问题: 1) 当outE()(如下面的gremlin查询中所示)具有包含打印的标签时,在以下查询中返回顶点“a” g、 V().hasLabel('url')。has('name','sw10707')。as('a')。outE('print')。has('forward','states')。inV()。select('a')) 2) 返回所有顶点,如下所述,这些顶点的边

我有两个类似方法的问题陈述。我是否可以在这两个问题陈述中都添加一个contains或like查询来解决我在gremlin中的问题:

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

g、 V().hasLabel('url')。has('name','sw10707')。as('a')。outE('print')。has('forward','states')。inV()。select('a'))

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

g、 V().hasLabel('url')。has('name','sw10707')。as('a')。outE('print')。has('forward','states')。inV()

此查询不起作用: g、 V().hasLabel('url').has('name','sw10707').as('a').outE().filter(it.name.matches('.pri'))

.net驱动程序已经存在一个问题(但我找不到java的类似功能): 此遍历:

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

g.V().hasLabel('url').
  has('name','sw10707').
  outE().filter{it.name.matches('.pri.')}
不幸的是,CosmosDB不支持lambdas,因此您的遍历将失败。在这个时候,我知道没有一种解决方法,除了返回边在客户端上过滤它们,然后使用它们开始第二次遍历……这不太好。希望你提出的问题很快会带来一些缓解


请注意,我在这个问题上发表了评论,提到TinkerPop正在考虑提供这些文本谓词-讨论是。

好的,谢谢。我们是否可以在azure db中使用SQL contains表达式进行查询(如果cosmos graph和azure中的SQL db的数据库位置相同),并从中获取一些数据,以便在graph上进行进一步查询?抱歉,如果这个问题很模糊,因为我是Azure Cosmos.FYI的新手,我也尝试过使用用于gremlin服务器的cypher客户端()。当我尝试使用contains和regex运行几个查询时,这个错误仍然存在。两者都不起作用。你有没有一个解决办法,或者是azure Cosmos的通用方法。我尝试的查询:MATCH(u:url{name:'sw8230'})-[r]->(o:otherentities),其中类型(r)=~'.*导出。*'返回o并匹配(u:url{name:'sw8230'})-[r]->(o:otherentities),其中类型(r)包含“导出”返回o。请推荐。这是CosmosDB的问题。它与查询语言无关。我想你可能需要尝试一下你的想法,用
包含
——听起来像是一个可行的解决办法,但我不确定。