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/
干杯
我的图表如下所示:
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/
干杯