此(newbe-)問題基於官方getting started with neo4j online-tutorial中提供的數據庫。neo4j羣與不同終點的關係
我的目標是創建一個查詢,列出所有連接到以上的兩部電影的人。 數據庫由人和電影類型的節點組成。節點通過「ACTED_IN」,「DIRECTED」,「WROTE」或「PRODUCED」等關係進行關聯。
該數據庫指出,吉恩哈克曼在三部不同的電影中扮演角色,而卡梅隆克羅則導演,製作並編寫了一部電影。所以Cameron與單個電影有三種關係,而Gene則與三種不同的電影相關。存在更多節點和連接。
我當前的查詢去如下:
match (p:Person)-[r]->(m:Movie) with p, count(r) as rel where rel > 2 return p;
這將返回:
- 吉恩·哈克曼
- 湯姆·克魯斯
- 金馬倫克洛
基因和湯姆每人都在三部不同的電影中演出,所以這是正確的。 如上所述,卡梅隆的所有關係都轉到了同一部電影中,這不是我的意圖。查詢不應該返回這個列表中的Cameron,而只是前兩個人。很明顯,我可以通過「ACTED_IN」關係走,但我也想列出不是演員的人,例如,一位撰寫三部或更多部分單獨電影的作者。
另一個查詢我雖然的是:
match (m:Movie)<-[ra]-(p:Person)-[rb]->(b:Movie) ...
不幸的是,這限制連接數恰好是兩個。
在計算人物和電影之間的關係時,是否可以調整第一個查詢的方式是隻包含不同的電影?
優雅的解決方案,工作,似乎更少的CPU昂貴。 – 2014-08-28 07:47:22