0

私はこのサイファークエリを取得しました:

match (c:Person)
match (c)-[:eml]->(emls:Email)
match (c)-[:phn]->(phns:Phone)
return phns.Number, emls.Value

ノード数Emailは 13、Phoneノード数は 10 です。

ノードを返すと、結果は次のようになります: 13Emailノードと 10Phoneノード しかし、プロパティを返すと、次のphones.Numberようになります。

4

1 に答える 1

4

新しいパターンを照合して結果グラフを拡張するたびに、以前の結果と新しい結果のデカルト積を実行します。

  1. 1 人います
  2. 次に、1 人 x 13 通の電子メール、つまり 13 (人、電子メール) タプルがあります。
  3. すると、1 人 x 13 メール x 10 電話、つまり 130 (人、メール、電話) タプルが得られます。

製品を回避するには、各ステップで収集する必要があります。1 人あたり 1 行の結果、または電子メールと電話の両方がコレクションである 1 つの (人、電子メール、電話) タプルを保持します。

MATCH (c:Person)
OPTIONAL MATCH (c)-[:eml]->(emls:Email)
WITH c, collect(emls.Value) AS emails
OPTIONAL MATCH (c)-[:phn]->(phns:Phone)
RETURN c, emails, collect(phns.Number) AS phones
于 2016-10-24T14:29:48.790 に答える