【发布时间】:2013-05-08 03:23:13
【问题描述】:
我正在尝试在 neo4j/cypher 中进行一些模式匹配,但遇到了这个问题:
我要搜索两种类型的图表:
星形图:具有一个中心节点和多个传出关系的图。
n 长度线图:长度为 n 的线图,其中没有节点重复(我的图中有一些双向边和循环)
所以主要问题是当我做一些事情时:
- 匹配 a-->b, a-->c, a-->d
- 匹配 a-->b-->c-->d
Cypher 不保证(当我尝试时)a、b、c 和 d 都是不同的节点。对于小图,这可以很容易地修复
WHERE not(a=b) AND not(a=c) AND ...
但我正在尝试制作大小为 10+ 的图形,因此检查所有节点之间的相等性不是一个可行的选择。 Afaik,RETURN DISTINCT 不能很好地工作,因为它不检查变量之间的相等性,只检查不同的行。有什么简单的方法可以指定查询以使不同命名的节点不同吗?
【问题讨论】:
-
恐怕目前,除了使用 where close 之外别无选择!这是一个很好的功能,可以关闭密码,只提供没有冗余节点的路径,也许您应该考虑为功能请求打开一个问题
-
他们正在努力在 2.0 中为其中一些查询添加密码语法。
-
我知道这篇文章非常古老,但到目前为止有人找到解决方案吗?据我所知,新的查询语言版本目前还没有解决方案。此外,目前还没有列表(创建集合)的“独特”方法,我可以将其用作解决方法(如
size(distinct([a,b,c,d])=4)
标签: neo4j cypher distinct-values