首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Cypher:所有的工作都不像预期的那样

Cypher:所有的工作都不像预期的那样
EN

Stack Overflow用户
提问于 2018-07-26 14:52:45
回答 1查看 185关注 0票数 0

因此,我的查询是一个“超级路径查找问题”。

这里的相关节点是;

路由:整体路径对象

tlroutesegment:路由和不同段(构成完整路径的部分)之间的逻辑链接(ps:我知道这可以用关系更好地表示,但是数据库只是这样:S)

oms:物理路径段本身

验证路径:与此问题或多或少无关的;路由的顶级实体

接下来是我遇到的实际问题;下面是解决上述问题的有效解决方案,但是,我希望通过减少我们必须在这里搜索的第4行路线的#来优化查询。

代码语言:javascript
复制
MATCH (vp:validochpath {"some ID HERE"})-->(ort:route)<-- 
(rs:tlroutesegment)-->(oms:oms)
WITH collect(oms) AS omsNodes

MATCH (ort:route)
WHERE ALL(x in omsNodes WHERE (ort)<--(:tlroutesegment)-->(x))
WITH ort

MATCH (ort)--(vp:validochpath)

RETURN *

这就是新的查询的样子,正如您所看到的,我使用这个关系过滤掉了很多路由节点。

代码语言:javascript
复制
MATCH (vp:validochpath {onepID:"some ID HERE"})-->(ort:route)<-- 
(rs:tlroutesegment)-->(oms:oms)<--(rs2:tlroutesegment)

WITH rs2, collect(oms) AS omsNodes

MATCH (rs2)-->(ort2:route)
WHERE ALL(x in omsNodes WHERE (x)<--(:tlroutesegment)-->(ort2))

MATCH (ort2)--(vp:validochpath)

RETURN *

问题是,这个查询似乎没有过滤掉所有节点的WHERE,只返回所有的内容。

EN

Stack Overflow用户

发布于 2018-07-26 19:40:35

在第二个查询中,WHERE子句接受所有匹配。

从第一个MATCH子句中,我们知道rs2是一个tlroutesegmentomsNodes中的所有节点都与rs2相关。从第二个MATCH子句中,我们也知道ort2rs2有关。WHERE子句检查omsNodes中的所有节点是否与与ort2相关的tlroutesegment相关。因为rs2是一个tlroutesegment,所以这个测试总是成功的。

如果要使用与tlroutesegment节点不同的rs2节点测试路径的存在性,请尝试以下WHERE子句:

代码语言:javascript
复制
WHERE ALL(x in omsNodes WHERE
  SIZE([(x)<--(y:tlroutesegment)-->(ort2) WHERE y <> rs2 | y]) > 0)
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51541813

复制
相关文章

相似问题

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