如何解决删除密码查询输出的自同构
在执行 Cypher 查询以检索具有自同构的特定子图时,比方说
MATCH (a)-[:X]-(b)-[:X]-(c),RETURN a,b,c
似乎默认行为是返回每个检索到的子图及其所有自同构。 在那个例子中,如果 (u)-[:X]-(v)-[:X]-(w) 是一个匹配模式的图,输出将是 u,v,w 也是 w,u,包含在同一个图中。
有没有办法只检索每个子图一次?
编辑:如果 Cypher 具有在搜索中执行此操作的功能,使用某种对称破坏条件,因为它会减少计算时间,那就太好了。如果不是这种情况,您将如何进行后处理以找到所需的输出?
解决方法
在您进行的查询中,(a)-[r:X]-(b)
和 (a)-[t:X]-(c)
指代类似的模式。因为(b)和(c)可以互换。什么是需要重复匹配两次? MATCH (a)-[r:X]-(b) RETURN a,r,b
返回您要查找的所有子图。
编辑
您可以执行以下操作来查找具有两个 X
类型关系的节点。
MATCH (a)-[r:X]-(b) WHERE size((a)-[:X]-()) = 2 RETURN a,b
,
对于这种镜像模式,我们可以对内部图 id 添加一个限制,以便只保留两条路径之一:
MATCH (a)-[:X]-(b)-[:X]-(c)
WHERE id(a) < id(c)
RETURN a,b,c
这也将防止出现 a = c
的情况。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。