2016-10-04 58 views
0

我對Neo4J很新,我無法獲得這個簡單的查詢工作。 我的數據是這樣的:Neo4j Cypher從包含訂購的簡單查詢中移除重複項

(a)-[:likes]->(b) 
(a)-[:likes]->(c) 

現在我想提取與每個人名單誰喜歡別人。

試圖

match (u)-[:likes]->(p) return u order by p.id desc; 

這給了我(一)的副本。 我試着用不同的:

match (u)-[:likes]->(p) return distinct u order by p.id desc; 

這給了我 '變量p未定義'。

我知道,如果我放棄排序,截然不同的作品並給我一次(a)。

但是,我怎樣才能在不同的時間工作,並在同一時間?

回答

1

考慮爲什麼您的查詢不工作:

沒有不同,你必須用U的每一個配對和p行。當你使用DISTINCT時,它應該如何排序,當同一個u有多行時,匹配多個p?這是一個不可能的任務。

如果您將其改爲通過u.id進行排序,那麼它就可以正常工作。

順便說一下,我鼓勵您使用標籤來限制您的查詢僅限於相關節點。您也可以重新修改您的查詢,以防止它發出重複內容,並完全避免需要DISTINCT。

如果我們假設你有興趣上貼有節點:人,您的查詢可能是:

MATCH (p:Person) 
WHERE EXISTS((p)-[:likes]-()) 
RETURN p ORDER BY p.id DESC