2017-03-06 78 views
1

我有这样的关系:(a)-[:HAS]->(b)neo4j有没有办法在密码查询中允许'空白'参数?

我希望用户能够提供a_id OR b_id和获取数据,一些沿暗号查询的像行:

MATCH (a:A {id: {a_id}})-[:HAS]->(b:B {id: {b_id}}) RETURN *

但如果我没有通过参数a_idb_id我得到一个错误。 neo4j有什么办法让参数不存在,然后忽略它?

也许沿着线的东西: CASE {a_id} WHEN NOT NULL THEN ...

回答

1

可以使用指定的顶级PARAM。例如:

传递PARAMS:

:params { "_": { a_id: '123' } } 

和查询:

MATCH (a:A {id: {_}.a_id})-[:HAS]->(b:B {id: {_}.b_id}) RETURN * 
+0

这可能失败,因为如果在PARAMS不提供的财产将是无效的。我认为使用COALESCE()可能会解决这个问题:'MATCH(a:A {id:COALESCE({_}。a_id,a.id)}) - [:HAS] - >(b:B {id:COALESCE {_}。b_id,b.id)})RETURN *' – InverseFalcon

相关问题