Neo4j Cypher 查询多对多关系

Neo4j Cypher query for many to many relationship

我的图表如下所示:

Brand--SOLD_BY-->Store

某件商品的一个品牌可以在多家商店销售。同样,一个商店可以销售多个品牌的商品。

我想要实现的是找到所有销售特定品牌的商店,但在结果中连同该商店,我还想要该特定商店销售的其他品牌。

例如:

品牌 1 由 StoreA、StoreB、StoreC 销售。结果应该类似于..

商店 A - 品牌 1、品牌 2

商店 B - 品牌 1、品牌 3

StoreC - Brand1

我找到了商店,但找不到商店出售的其他品牌。

MATCH (b:Brand)-[s:SOLD_BY]->(s:Store)
WHERE b.id=1
WITH DISTINCT s AS stores
RETURN stores

我想到的一件事是,如果我应该在收集的商店中循环并找到品牌,但我不知道这样做的效率有多高,因为图表可能有很多节点。

如有任何帮助,我们将不胜感激。

您可以试试这个查询:

MATCH (:Brand {id:1})-[:SOLD_BY]->(s:Store)
RETURN s, [ (b)-[:SOLD_BY]->(s) | b] AS brands

查看此 link 以获得更多信息:https://neo4j.com/blog/cypher-graphql-neo4j-3-1-preview/

干杯