2017-03-06 40 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

相關問題