2016-11-10 37 views
1

我開發一個小型的社交網絡應用和我在我的Neo4j圖形分貝以下節點和關係:Neo4j的比賽節點和關係,如果存在

  1. 用戶節點
  2. 後的節點。 Post節點通過POSTED_BY關係連接到User節點,Post節點可能通過SHARING關係連接到另一個Post節點,以防帖子共享另一個帖子。

我想檢索由特定用戶發佈的所有帖子,並且每個帖子在獲得原始帖子的情況下還可以獲得原始帖子(以及原始帖子的發佈者)。

我設法使用可選的比賽,以獲得所需的信息,但我是新來的Neo4j,不知道這是要走的正確方法:

match (p:Post)-[r: POSTED_BY]-(publisher:User) 
where publisher.userId = {userId} 
optional match (p:Post)-[r2: SHARED_POST]-(sharedPost:Post)-[r3: POSTED_BY]-(sharedPostPublisher: User) 
return p as post,publisher, sharedPost, sharedPostPublisher 

這是爲了獲取這個信息的正確方法還是應該我使用其他方法?

回答

1

除了缺乏關係方向,它看起來很好。

缺乏方向的情況當然是略少言自明的(即使有一個隱含的方向,因爲User不是POSTED_BYPost),但它也改變了查詢的語義:因爲​​關係可以在任何方向上都可以遍歷,當然,如果有股票,您將獲得原始帖子,但如果它是原始帖子,您也將獲得所有股份。這不是你說的你想要的。

相關問題