首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATCH命令,在WHILE中使用$currentMatch停止遍历

MATCH命令,在WHILE中使用$currentMatch停止遍历
EN

Stack Overflow用户
提问于 2018-05-24 06:57:45
回答 1查看 70关注 0票数 0

我想使用match遍历一个图,但是当某个节点没有连接到另一个特定节点时,停止遍历。

为了澄清,我有以下设置:

图的设置

我的目标是执行以下查询:

对于一个墙,给出与墙相同的墙的所有链接/深度属性,但前提是从属性到墙壁的完整路径是提交的一部分。

这意味着,从提交#21:0开始,我转到墙#30:0,为此我应该获得0属性(请注意,属性#34:0没有链接到提交#21:0!),而从提交#22:0开始,将转到墙#29:0,为此我应该获得所有4个属性。基本上,我想在未连接到指定提交节点的节点被击中时停止MATCH的遍历。

我尝试了一个MATCH命令,其中使用了一个while,在该命令中,我检查提交到$currentMatch时是否存在shortestPath。但是,这似乎不起作用,我得到的错误是顶点ID不能为NULL。

我的查询是:

代码语言:javascript
复制
select expand(ret) from (
    MATCH {class: V, as: commit, where:(@rid = #21:0)},
    {as: commit}.out("commitlink"){as: wall, where:(@class INSTANCEOF "Wall")},
    {as: wall}.out("E"){as: props, where:(@class = "Property"), while:(shortestPath($matched.commit, $currentMatch, "OUT","commitlink").size() > 0)}
  return items as ret)

..。但是请注意,此查询会给出“顶点id不能为空”的错误。

我似乎误解了$currentMatch在命令的while部分中的可用性。

编辑:这似乎完成了以下工作:

代码语言:javascript
复制
select expand($properties) LET 
$commit = (SELECT FROM #22:0),
$wall = (SELECT FROM (SELECT expand(out("commitlink")) FROM $commit) WHERE 
@class INSTANCEOF "Wall"),
$properties = (SELECT FROM (TRAVERSE OUT("E") FROM $wall WHILE (shortestPath($commit, @rid, "OUT", "commitlink").size() > 0)) WHERE @class INSTANCEOF "Property")

但是使用遍历查询而不是匹配有缺点吗?

EN

回答 1

Stack Overflow用户

发布于 2018-05-24 18:06:56

我不知道我是否得到了您想要的,但是我理解的是,您的查询应该返回所有直接连接到提交顶点的属性,其中没有墙,对吗?

如果这是你想要的,试试这个:

代码语言:javascript
复制
MATCH {class: Property, as: props}.in("commitlink"){as: commit, where:(@rid = #19:0)} return props

这是我的模式:

其结果是:

呼呼它有帮助

问候

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50502900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档