有三種節點類型:A,B和C.如何編寫這個Neo4j查詢?
我需要所有的A和B以及只有C參與完全一個關係。
match (n)
where n:A or n:B or (n:C)-[]-()
with count(n) as countOfRels
where countOfRels > 0
return n
不接近,我知道。我不確定該從哪裏出發。
有三種節點類型:A,B和C.如何編寫這個Neo4j查詢?
我需要所有的A和B以及只有C參與完全一個關係。
match (n)
where n:A or n:B or (n:C)-[]-()
with count(n) as countOfRels
where countOfRels > 0
return n
不接近,我知道。我不確定該從哪裏出發。
這是一個有點奇怪的是A,B和C似乎不相關......但這裏是你如何能解決你的問題爲C:
MATCH (n:C)
WHERE size((n)-[]-()) = 1
RETURN n
UNION
MATCH (n:A)
RETURN n
UNION
MATCH (n:B)
RETURN n;
希望這有助於。
問候, 湯姆
您可以使用此
match(n)
where n:A OR n:B OR (n:C)-[r]-()
with count(r) as countOfRels
where countOfRels > 0
return n
希望這有助於。
你可以做MATCH (a)--() WHERE NOT()--(a)--()
匹配「只有一個關係的節點」。之後,您可以使用UNION或COLLECT()+ UNWIND將單獨的查詢合併到一個行結果集中。
// using Union
MATCH (n:C)--()
WHERE NOT()--(n)--()
RETURN n
UNION
MATCH (n:A)
RETURN n
UNION
MATCH (n:B)
RETURN n;
// Using collect
OPTIONAL MATCH (a:A)
OPTIONAL MATCH (b:B)
OPTIONAL MATCH (c:C)--() WHERE NOT()--(c)--()
WITH COLLECT(a)+COLLECT(b)+COLLECT(c) as nodez
UNWIND nodez as n
RETURN DISTINCT n
我也需要甲和乙。 – nicomp
你去那裏,更新:-) –