2016-11-10 2 views
1

私は小さな、ソーシャルネットワークアプリケーションを開発していますし、私は私のNeo4jグラフデシベルで、次のノードと関係を持って存在している場合:のNeo4jマッチノードとの関係

  1. ユーザー・ノード
  2. ポストノードを。投稿ノードはPOSTED_BY関係でユーザノードに接続され、投稿ノードは別の投稿を共有する場合には共有関係によって別の投稿ノードに接続される可能性があります。

特定のユーザーによって投稿されたすべての投稿を取得したいと思います。また、各投稿については、共有(および元の投稿の発行者)の場合も元の投稿を取得します。

は、私は、オプションの一致を使用して、必要な情報を得ることができたが、これは行くための正しい方法であれば、私はの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

関係の方向性の欠如とは別に、それはうまく見えます。

UserPOSTED_BYPostないよう、暗黙の方向があります場合でも)方向の欠如はもちろん、わずかに少ない自明であるが、それはまた、クエリの意味を変更します。​​関係は可能性があるため任意の方向に横断することができます。もちろん、株式の場合は元のポストを得るでしょうが、が元の投稿の場合は、すべての株式も取得します。それはあなたが望んだことではありません。