我正在使用以下结构的查询
MATCH path=((:Start)-[:NEXT*..100]->(n))
WHERE ALL(mnode IN nodes(path)
WHERE mnode.minimum <= $data[mnode.checkagainst])
其中
data
类似于{checkparam1: 24}
。这对我而言是:我要检查的最小值的参数名称位于节点中。一切正常,但是当我构建
apoc
之类的东西时MATCH path=((:Start)-[:NEXT*..100]->(n))
WHERE ALL(mnode IN nodes(path)
WHERE mnode.minimum <= apoc.date.toYear($data[mnode.checkagainst]))
它告诉我
Failed to invoke function `apoc.date.toYears`: Caused by: java.lang.NullPointerException
我怀疑我不能依赖apoc调用中的“来自查询内存的信息”,因为当我手动填写
mnode.checkagainst
的值时MATCH path=((:Start)-[:NEXT*..100]->(n))
WHERE ALL(mnode IN nodes(path)
WHERE mnode.minimum <= apoc.date.toYear($data['checkparam1']))
apoc呼叫有效。不确定这是否是预期的行为?
有任何解决方法的建议吗?
最佳答案
如果任何apoc.date.toYear($data[mnode.checkagainst])
缺少mnode
属性,则checkagainst
调用将产生该错误。
以下(部分)查询应仅生成所有节点都具有checkagainst
属性的路径(并通过<=
测试):
MATCH path=((:Start)-[:NEXT*..100]->(n))
WHERE ALL(mnode IN nodes(path)
WHERE
mnode.checkagainst IS NOT NULL &&
mnode.minimum <= apoc.date.toYears($data[mnode.checkagainst]))
关于neo4j - 密码查询以动态匹配Apoc调用中的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45378806/