グラフ内のデータベース関係をモデル化しようとしています。ノードのすべてのリレーションシップを含むパスを見つける
ブルーノードはオブジェクトを表す:ここに私のプロトタイプからのサンプルグラフです。緑色のノードは、オブジェクト間のリレーションまたはジョインを表します。
あなたは4オブジェクトために取得する必要がある場合、あなたは私がオブジェクト1-3からのパスを照会しようとしている対象物1と3
の両方からの値で参加する必要があります:
match(one:Object {Name: "1"}),
(three:Object {Name: "2"}),
p = (one)-[RELATES*]-(three)
RETURN p
これは私に2つのパスを与えます。一つは(1)-[a]-(2)-[b]-(3)
、もう一つは(1)-[c]-(3)
です。後者は、グラフのすべての "関連する"エッジがパスにないため、無効です。それに応じてpをフィルタリングする方法はありますか?
また、関係をモデル化するより良い方法がありますか?
は、エッジをa-> 1、b-> 2、c-> 3,& c-1としてFROM
、a-> 2、b-> 3およびc-> 4と表すことができます。あなたは関係として関係をモデル化することは理にかなっている場合TO.
"後者は無効で、グラフのすべての'関連するエッジはパスに含まれていません。 - パスには、緑のノードから始まるすべての '関連する 'エッジを含める必要がありますか?例えば '(1) - [c] - (3)'は '4 'を含んでいないので無効ですか? –
はい、これが私の意図です。 2つ以上のオブジェクトが別のオブジェクトをルックアップするために必要とされる場合がある。これは、 "c"関係ノードがオブジェクト4に到達するためのもので、すでに1と3を持つパスが必要な場合の例です。うまくいけばいいと思います。私はもともと、オブジェクトノード間のエッジ(緑のノードなし)でこれをモデル化しようとしましたが、そのような場合にどのように対応できるのかわかりません。 – user2480485