标签动态获取的查询无法支持变量的两次使用,请问有没有其它类似的查询?不用UNION连接~
发布于 6 年前 作者 crazyyanchao 1974 次浏览 来自 问答

123132132133042.png

5 回复

这应该是其他原因。直接运行run里面的Cypher、使用测试的标签会返回结果吗?

@graphway // 无法返回结果 CALL db.labels() YIELD label CALL apoc.cypher.run(“MATCH P=(n:LinkedinID)-[]-(f:"+label+")-[]-(g:"+label+")-[]-(h)-[]-(m:LinkedinID) WHERE n.name CONTAINS {a} AND m.name CONTAINS {b} RETURN P”,{a:‘Perry’,b:‘Jenny Perron’}) YIELD value RETURN value.p // 可以返回结果 MATCH P=(n:LinkedinID)-[]-(f:LinkedinID)-[]-(g:组织)-[]-(h)-[]-(m:LinkedinID) WHERE n.name CONTAINS ‘Perry’ AND m.name CONTAINS ‘Jenny Perron’ RETURN P

你在APOC的调用中用了2次label变量,在你下面的Cypher中只有一次啊: MATCH P=(n:LinkedinID)-[]-(f:LinkedinID)-[]-(g:组织)-[]-(h)-[]-(m:LinkedinID) WHERE …

@graphway 我不明白您的意思,但是我是想实现这样的查询:MATCH P=(n:LinkedinID)-[]-(f:LinkedinID)-[]-(g:组织)-[]-(h)-[]-(m:LinkedinID) WHERE n.name CONTAINS ‘Perry’ AND m.name CONTAINS ‘Jenny Perron’ RETURN P

f 和 g 两个节点处的标签动态往里面传入不是在写查询的时候写死,因为可能会关联到多个标签

在外面拼接好cypher语句,然后直接执行 在cypher里不支持动态传label和relathionship,只能通过拼接语句或者apoc(apoc好像也是通过拼接语句实现的)

回到顶部