Neo4J密码排除反向路径

Neo4J密码排除反向路径,neo4j,Neo4j,我有一个简单的图,其中节点连接到其他节点,例如 人员-[店铺]->店铺 我想找到每个商店的顾客数量,我可以通过匹配来做到这一点 商店 以及计算人员节点的数量。 我可以排除商店相同的情况 在Cypher中,我如何停止获取路径的两个方向。 e、 g.(带id) 194200 200 194 我只想每条路走一次 更新: 因此,我想进行上述查询,但只获取每条路径一次的原因是,我最终想要生成一个图,其中商店通过一条边连接在一起,该边具有共享客户数量的权重 因此,对于上述情况 200-[共享客户,18

我有一个简单的图,其中节点连接到其他节点,例如

人员-[店铺]->店铺

我想找到每个商店的顾客数量,我可以通过匹配来做到这一点
商店
以及计算人员节点的数量。 我可以排除商店相同的情况

在Cypher中,我如何停止获取路径的两个方向。 e、 g.(带id)

194200
200 194

我只想每条路走一次

更新: 因此,我想进行上述查询,但只获取每条路径一次的原因是,我最终想要生成一个图,其中商店通过一条边连接在一起,该边具有共享客户数量的权重

因此,对于上述情况

200-[共享客户,18]-194


我不希望在新图形中出现反向路径。

您可以使用更简单的解决方案:

首先匹配商店,您将不会有重复的,并计算他们的客户数:

MATCH (shop:Shop)
MATCH (shop)<-[:Shops_At]-(customer)
RETURN shop, count(*)
匹配(商店:商店)

MATCH(shop)您可以使用更简单的解决方案:

首先匹配商店,您将不会有重复的,并计算他们的客户数:

MATCH (shop:Shop)
MATCH (shop)<-[:Shops_At]-(customer)
RETURN shop, count(*)
匹配(商店:商店)

匹配(商店)我已经决定了做我想做的事的方法。
在cypher查询中,我可以坚持一个店铺的ID比另一个小


匹配(n:`shop`)-(p:`person`)-(m:`shop`)其中id(n)我已经决定了一种做我想做的事情的方法。
在cypher查询中,我可以坚持一个店铺的ID比另一个小


匹配(n:`shop`)-(p:`person`)-(m:`shop`)其中id(n)谢谢您的回答,但我想返回两个商店之间的(加权)关系,以便进一步分析(创建新网络)。不,只要知道一家商店的顾客数量就行了。我可以用类似于上面的东西来做吗?你能在你的问题中解释这个重量概念,并详细说明你想要的结果吗?通过一个边缘连接的商店,其重量等于他们共享的客户数量。由类似于上述查询的内容导出。谢谢您的回答,但我想返回两个店铺之间的(加权)关系,供其客户进一步分析(创建新网络)。不,只要知道一家商店的顾客数量就行了。我可以用类似于上面的东西来做吗?你能在你的问题中解释这个重量概念,并详细说明你想要的结果吗?通过一个边缘连接的商店,其重量等于他们共享的客户数量。由类似于上述查询的内容派生。
MATCH (s:Shop)
MATCH (s)<-[:SHOPS_AT]-(c)
MATCH (otherShop)<-[:SHOPS_AT]-(c)
WHERE otherShop <> s
WITH s, otherShop, count(distinct(c)) as sharedCustomers
MERGE (s)-[:CROSS_SHOP {weight: sharedCustomers}]->(otherShop)