我有兩個不同的父節點,它們都有特定關係類型(指向各種第三和第四個子節點)的特定關係。只有一個父節點具有不同關係類型的另一個關係(指向各種第五和第六個子節點)。我想編寫一個使用WITH運算符的密碼查詢,以便我可以返回父(對於RELATIONSHIP_ONE)的node.id,以及由RELATIONSHIP_TWO產生的用於子節點的target.id的集合數組。我有Cypher支架查詢返回節點的任何麻煩沒有類型RELATIONSHIP_TWO的關係Cypher CASE WHEN/ELSE與WITH - 返回值
這將返回一個JSON對象作爲數組的第一個索引:
MATCH (n)-[rel_one:RELATIONSHIP_ONE]-()
WHERE n.id='EXAMPLE_ID_ONE'
WITH n
MATCH (n)-[rel_two:RELATIONSHIP_TWO]->(target)
RETURN n.id AS id,
COLLECT(target.id) AS targetlist;")
[
{
"id": "EXAMPLE_ID_ONE",
"targetlist": [
"target_one_id",
"target_two_id",
"target_three_id",
"target_four_id",
"target_five_id"
]
}
]
這將返回一個空數組:
MATCH (n)-[rel_one:RELATIONSHIP_ONE]-()
WHERE n.id='EXAMPLE_ID_TWO'
WITH n
MATCH (n)-[rel_two:RELATIONSHIP_TWO]->(target)
RETURN n.id AS id,
COLLECT(target.id) AS targetlist;")
[]
因爲有這EXAMPLE_ID_TWO暗號查詢(其中n和目標是通過關係型RELATIONSHIP_TWO的關係)沒有結果似乎取消此暗號查詢的返回值n.id能力。也許像這樣:
[
{
"id": "EXAMPLE_ID_TWO",
"targetlist": [] // or even null
}
]
我在使用CASE做出了嘗試WHEN/ELSE表達式,但它未能返回一個值(即使EXAMPLE_ID_ONE)。下面的例子。如果沒有RELATIONSHIP_TW0加入n和目標節點,我想使用一個空數組作爲目標列表的值。我會非常感謝你的幫助。
MATCH (n)-[rel_one:RELATIONSHIP_ONE]-()
WHERE n.id='EXAMPLE_ID_ONE'
WITH n
MATCH (n)-[rel_two:RELATIONSHIP_TWO]->(target)
RETURN n.id AS id,
CASE WHEN target is NULL THEN []
ELSE COLLECT(target.id) END AS targetlist;
MATCH (n)-[rel_one:RELATIONSHIP_ONE]-()
WHERE n.id='EXAMPLE_ID_TWO'
WITH n
MATCH (n)-[rel_two:RELATIONSHIP_TWO]->(target)
RETURN n.id AS id,
CASE WHEN target is NULL THEN [];
ELSE COLLECT(target.id) END AS targetlist;
什麼是年底的暗號部分你的問題?一個辦法?或者你嘗試過的東西? – Supamiu
它只是我嘗試但沒有工作 –