微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

删除密码查询输出的自同构

如何解决删除密码查询输出的自同构

在执行 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 举报,一经查实,本站将立刻删除。