簡體   English   中英

neo4j 找到所有發布我喜歡的東西的朋友

[英]neo4j find all friends who posted something I liked

我想找到所有發布我喜歡的東西的朋友。 為什么這個查詢不返回任何行但每個子句本身都返回一些東西?

 match (start:Person)-[:LIKES]->(post:Post), (start)-[:FRIEND]->(person: Person), (person)-[:POSTED]->(post) return start, post, person

profile01 簡介02

感謝您的查詢計划。

我們可以看到,在(start)-[:FRIEND]->(person)的擴展中,行數下降到零,因此發生了以下兩種情況之一:要么:FRIEND 不是實際的關系類型(可能是不匹配的情況),或者更有可能的是,所有存在的:FRIEND 關系都是相反的方向,傳入到起始節點而不是傳出。

對於像這樣的社交圖,因為它們都是:Person 節點,所以無法判斷關系是在哪個方向創建的,當您查詢時,方向不重要,重要的是:FRIEND 關系存在。

嘗試從此處的模式中刪除方向: (start)-[:FRIEND]-(person: Person) 如果你的關系類型是正確的,那應該會給你帶來正確的結果。

為簡單起見,我還將這 3 個模式組合成一個長模式。 這樣做將確保它不會提取不適合以后模式的額外模式(被檢索,然后稍后過濾掉)。 這是 Cypher 的樣子:

MATCH (start:Person)-[:LIKES]->(post:Post)<-[:POSTED]-(person: Person)
WHERE (start)-[:FRIEND]-(person)
RETURN start, post, person

我會從

MATCH (me:Person)-[:FRIEND]-(friend:Person)-[:POSTED]->(post:Post)<-[:LIKES]-(me)
RETURN DISTINCT friend

獲取 (friend:Person) 節點

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM