我有一个参数“title”,可能会也可能没有定义。如果定义了参数,我想匹配具有该参数的节点作为属性。
MATCH (movie:Movie {title: {title}})
如果未定义参数,我不希望通过该属性进行匹配,而只是返回所有电影。即我想通过参数筛选结果(如果存在)。这在一个查询中是否可行?
答案 0 :(得分:4)
您必须有条件地匹配标题。试试这个
MATCH (movie:Movie)
WHERE {title} IS NULL OR movie.title = {title}
答案 1 :(得分:1)
更新:这是可能的,请参阅其他答案。
我不认为这是可能的。一旦查询编译器找到参数,它就会尝试解析它。如果未定义参数,编译器将立即抛出异常 - 请参阅QueryState.getParam()
方法。 (如果您通过驱动程序使用Neo4j,这将导致另一个异常,例如使用Java驱动程序,这将导致ClientException
。)