Neo4j Cypher查询多对多的关系

时间:2017-07-29 18:01:51

标签: neo4j cypher graph-databases

我的图表如下所示:

Brand--SOLD_BY-->Store

某个商品的一个品牌可以由多个商店出售。同样,单个商店可以销售多个品牌的商品。

我想要实现的是找到所有销售特定品牌的商店,但结果与商店一起,我也希望其他品牌由该特定商店销售。

例如:

Brand1由StoreA,StoreB,StoreC销售。结果应该看起来像......

StoreA - Brand1,Brand2

StoreB - Brand1,Brand3

StoreC - Brand1

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

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

我曾经想过的一件事是,如果我应该在收集的商店内找到并找到品牌,但我不知道效率是多少,因为图表可以有很多节点。

任何帮助都将不胜感激,谢谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试此查询:

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

请参阅此链接以获取更多信息:https://neo4j.com/blog/cypher-graphql-neo4j-3-1-preview/

干杯