我刚刚将我的Cypher查询从1.8.2版移到2.0版,而这一段Cypher代码失败了
start n=node(*) match p=n-[r:OWES*1..200]->n
where HAS(n.taxnumber) AND NOT(n IN nodes(p)[1..-1])
return extract(s in relationships(p) :s.amount),
extract(t in nodes(p) :ID(t)), length(p) ;
我在ID(t)上说错误
SEVERE: Servlet.service() for servlet [SeeTheResults] in context with path [/DebtSolutions] threw exception
Invalid input '(': expected an identifier character, whitespace, NodeLabel, '.', node labels, '[', "=~", IN, IS, '*', '/', '%', '^', '+', '-', '<', '>', "<=", ">=", '=', "<>", "!=", AND, XOR, OR, WHERE, '|', ')' or ',' (line 1, column 174)
"start n=node(*) match p=n-[r:OWES*1..200]->n where HAS(n.taxnumber) AND NOT(n IN nodes(p)[1..-1]) return extract(s in relationships(p) :s.amount), extract(t in nodes(p) :ID(t)), length(p) ;"
^
错误指向id(t)。
在版本1.8.2上,查询是
start n=node(*) match p=n-[r:OWES*1..200]->n
where HAS(n.taxnumber) [1..-1])
return extract(s in relationships(p) :s.amount),
extract(t in nodes(p) :ID(t)), length(p) ;
因为1.8.2不支持AND NOT(n IN节点(p)[1 ..- 1]),如果我从2.0版本移动这部分,它会以同样的方式失败。 该图显示了OWE公司与关系属性AMOUNT之间的关系,即多少。
答案 0 :(得分:2)
我在1.8的另一个问题中更新了答案。
如果您将查询移至2.0,则必须使用:
替换提取,过滤等中的|
。
start n=node(*) match p=n-[r:OWES*1..200]->n
where HAS(n.taxnumber) AND NOT(n IN nodes(p)[1..-1])
return extract(s in relationships(p) | s.amount),
extract(t in nodes(p) | ID(t)), length(p)