2017-07-29 59 views
1

我有一個類似如下的圖表:Neo4j的暗號查詢多對多的關係

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 

有一件事我一直想的是,如果我要把收集儲存在內部循環,並找到了品牌,但我不知道如何有效的,這將是自該圖可以有多個節點。

任何幫助,將不勝感激,謝謝。

回答

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/

乾杯

+0

哎呦,我覺得你的意思是使用'B'來填充你的模式的理解而不是's'。 – InverseFalcon

+0

已完成更正。謝了哥們 ! – logisima

+0

感謝您的幫助!它像一個魅力。我想問一個簡單的問題 - 如果我說有超過10000個節點,這個查詢的效率會如何?我假設模式理解循環遍歷每個節點,所以我想知道這是否會導致大量節點的進程變慢。再次感謝。 –