我不知道維基百科模型,但我假設有很多不同的關係類型,這就是爲什麼 - [* 1..1] - ,我認爲這類似於 - [] - 甚至 - 。我懷疑它有什麼嚴重的影響。
您可以收集第一級匹配,並使用WITH WITH LIMIT將其限制爲20。然後,您可以使用這些(其他頁面)作爲起點執行第二次匹配。
MATCH (p1:Page {title:"Berlin"})<-[*1..1]-(otherPage:Page)
WITH p1, otherPage
LIMIT 20
MATCH (otherPage)<-[*1..1]-(secondDegree:Page)
WHERE secondDegree <> p1
WITH otherPage, secondDegree
LIMIT 500
RETURN otherPage, COLLECT(secondDegree)
有很多方法可以返回數據,這只是返回與後續匹配數組的第一次匹配。
如果關係的唯一類型是:Link和你想保留的起始節點,那麼你可以更改查詢到這一點:
MATCH (p1:Page {title:"Berlin"})<-[:Link]-(otherPage:Page)
WITH p1, otherPage
LIMIT 20
MATCH (otherPage)<-[:Link]-(secondDegree:Page)
WHERE secondDegree <> p1
WITH p1, otherPage, secondDegree
LIMIT 500
RETURN p1, otherPage, COLLECT(secondDegree)
感謝。結構非常簡單(在我的模型中)。這只是一個「:鏈接」類型的關係。你的解決方案似乎只能返回直接的鄰居和二級鄰居。但是留下了第一個開始節點,即柏林。有沒有辦法改變它? – 2014-10-10 17:40:44