我有多次调用以下cypher查询。
start n=node:MyIndex(Name="ABC")
return n
然后在代码中的其他地方
start m=node:MyIndex(NAME="XYZ")
return m
我的数据库托管在Azure中,因此我遇到了延迟/性能问题。为了加快流程并减少多次往返,我考虑将多个Cypher查询合并为一个。
实际上,我在查找中获得了10个以上的节点,但为了简单起见,我决定以下面的两个节点显示示例。
start n=node:MyIndex(Name="ABC"), m=node:MyIndex(NAME="XYZ")
return n, m
我的目标是在一次往返而不是10+中获得我所能做的。如果所有节点上的索引查找成功,它将成功运行。但是,如果一个索引查找失败,则Cypher查询返回零行甚至。我希望在缺失的节点上我将在n或m中获得等效的NULL。但是,没有运气。
请建议我做错了什么以及减少往返的任何变通办法。非常感谢!
答案 0 :(得分:1)
您可以使用lucene syntax的参数化查询,例如:
START n=node:MyIndex({query}) return n
并使用
进行参数化{'query':'Name:(ABC XYZ)'}
其中,名称列表是一个字符串,其中包含您要查找的空格分隔名称。