2016-02-24 3 views
0

Мне нужно сделать необязательное совпадение свойств отношений r1 и r2.Neo4j сравнить свойства отношения

r1 является п слоев глубоко, так что я получаю сообщение об ошибке:

"Type mismatch: expected Map, Node or Relationship but was Collection"

MATCH (a:node{x:”foo”})-[r1:sub*]->(b)-[r2:inst]->(c) 
USING INDEX a:node(x) 
WHERE r1.value = v2.value 
RETURN b,r2,c 

Как я могу сравнить r1.value к r2.value, когда я не знаю значение авансовый?

Спасибо!

ответ

1
MATCH (a:node{x:"foo"})-[r1:sub*]->(b)-[r2:inst]->(c) 
USING INDEX a:node(x) 
UNWIND r1 as r 
WITH b, r2, c, r 
WHERE r.value = r2.value 
RETURN b,r2,c 
+0

Thanks manonthemat! – Damon

1

Я думаю, это то, что вы ищете:

MATCH (a:node{x:”foo”})-[r1:sub*]->(b)-[r2:inst]->(c) 
USING INDEX a:node(x) 
WHERE last(r1).value = v2.value 
RETURN b,r2,c 

Объяснение: r1 является сбор. Это абсолютно логично, потому что вы задаете произвольную длину.

Итак, если вам нужно сравнить Последнее отношение в этой цепочке с некоторыми конкретными отношениями, вы можете использовать функцию last.