0

私はこのようなグラフを持っています: (2)<-[0:CHILD]-(1)-[1:CHILD]->(3) つまり: ノード 1,2 および 3 (すべて名前付き); エッジ 0 と 1

次の暗号クエリを作成します。

START nodes = node(1,2,3), relationship = relationship(0,1) 
RETURN nodes, relationship

結果として得られた:

==> +-----------------------------------------------+
==> | nodes                          | relationship |
==> +-----------------------------------------------+
==> | Node[1]{name->"Risikogruppe2"} | :CHILD[0] {} |
==> | Node[1]{name->"Risikogruppe2"} | :CHILD[1] {} |
==> | Node[2]{name->"Beruf 1"}       | :CHILD[0] {} |
==> | Node[2]{name->"Beruf 1"}       | :CHILD[1] {} |
==> | Node[3]{name->"Beruf 2"}       | :CHILD[0] {} |
==> | Node[3]{name->"Beruf 2"}       | :CHILD[1] {} |
==> +-----------------------------------------------+
==> 6 rows, 0 ms

ここで私の質問: なぜすべてのノードが 2 回になり、リレーションシップが 3 回になったのですか? 一度全部手に入れたいです。

お時間をいただきありがとうございます^^

4

2 に答える 2

1

Cypher の動作は SQL と非常によく似ています。START 句で変数を作成するときはfrom nodes, relationships、SQL (テーブル) で行うようなものです。match2つの可能な値すべてのデカルト積を取得している理由は、それらをフィルタリングしたり、何らかの処理を行っていないためです。where基本的には次のようになります。

select *
from nodes, relationships

テーブル間の外部キー関係を置き忘れた場所。

Cypher では、マッチを行うことでこれを行います。通常は次のようになります。

start n=node(1,2,3), r=relationship(0,1)
match n-[r]-m // find where the n nodes and the r relationships point (to m)
return *

しかし、一致するものがないため、デカルト積が得られます。

于 2013-06-08T21:51:55.280 に答える
0

何らかのマッチングを行わない限り、ノードとリレーションシップは 1 回だけ表示されます。

問題を再現しようとしましたが、できませんでした。

http://tinyurl.com/cobd8oq

あなたの問題のconsole.neo4j.orgの例を作成することは可能ですか?

ありがとう、

アンドレス

于 2012-05-22T15:14:27.553 に答える