Cypher:匹配可选/可空参数的节点

时间:2016-12-11 10:47:42

标签: neo4j cypher

我有一个参数“title”,可能会也可能没有定义。如果定义了参数,我想匹配具有该参数的节点作为属性。

MATCH (movie:Movie {title: {title}})

如果未定义参数,我不希望通过该属性进行匹配,而只是返回所有电影。即我想通过参数筛选结果(如果存在)。这在一个查询中是否可行?

2 个答案:

答案 0 :(得分:4)

您必须有条件地匹配标题。试试这个

MATCH (movie:Movie)
WHERE {title} IS NULL OR movie.title = {title}

答案 1 :(得分:1)

更新:这是可能的,请参阅其他答案。

我不认为这是可能的。一旦查询编译器找到参数,它就会尝试解析它。如果未定义参数,编译器将立即抛出异常 - 请参阅QueryState.getParam()方法。 (如果您通过驱动程序使用Neo4j,这将导致另一个异常,例如使用Java驱动程序,这将导致ClientException。)