我正在尝试查找与任何其他项目无关的项目(通过found_for关系)的所有相关节点(通过found_for_term关系) -
START n=node(8402) MATCH n<-[:friend]-(m) WHERE not(m-[:relative]->()) RETURN m.id;
这适用于1.9.2,但在1.8.1上抛出了“无效查询”错误。
我正在使用Heroku上的Neo4j Addon,它位于1.8.1(他们目前不打算升级到1.9.2)
你能帮助我重新考虑查询并解释为什么它在1.8.1上失败了吗?
谢谢!
答案 0 :(得分:1)
看起来WHERE NOT
在1.8.1中的路径中不支持匿名节点。解决方法是:
START n=node(8402), x=node(*)
MATCH n<-[:friend]-(m)
WHERE not( (m)-->(x) )
RETURN m.id;
然而,当node(*)
触及所有节点时,此查询将会很慢。
答案 1 :(得分:1)
或者使用具有选项关系的其他慢速选项:
START n=node(8402)
MATCH n<-[:friend]-(m)
WITH m
MATCH m-[r?:relative]->()
WHERE r IS NULL
RETURN m.id;
更好的是,使用graphenedb升级到1.9或2.0。