2017-07-17 20 views
0

我有類型的挑戰,條目,用戶的節點的輸出中去除重複的,評論從COLLECT子句

  • 的條目可以是PART_OF一個挑戰
  • 挑戰或條目可以是 POSTED_BY用戶
  • 述評可以POSTED_BY用戶
  • 述評可以是 POSTED_IN一個挑戰
  • 用戶能夠喜歡挑戰或條目

我正在試圖查詢所有已經被特定用戶LIKED或評論的挑戰PART_OF或具有由同一用戶發佈的條目(一個或多個這些條件)的條目。

MATCH (u:User {id: 'r1tcX0vxW'})-[:LIKES]->(c:Challenge) 
WITH COLLECT (c) as likedChallenges 
MATCH (c:Challenge)<-[:POSTED_IN]-(comment:Comment)-[:POSTED_BY]->(u) 
WITH likedChallenges, COLLECT (c) as commentedChallenges 
MATCH (c:Challenge)<-[:PART_OF]-(e:Entry)-[:POSTED_BY]->(u) 
WITH likedChallenges + commentedChallenges + COLLECT (c) AS allChallenges 
UNWIND allChallenges as c 
MATCH (e:Entry)-[:PART_OF]->(c) 
RETURN e; 

我使用COLLECT條款,以使這項工作,但問題是有挑戰的節點的重複輸出,我不知道如何刪除重複。

回答

3

您可以使用DISTINCT最後一句話,在返回不同的條目:

RETURN DISTINCT e; 

注意:您在您的Cypher查詢大量的語法錯誤。這應該會更好:

MATCH (u:User {id: 'r1tcX0vxW'})-[:LIKES]->(c:Challenge) 
WITH u, COLLECT(c) as all 
MATCH (c:Challenge)<-[:POSTED_IN]-(:Comment)-[:POSTED_BY]->(u) 
WITH u, all + COLLECT(c) AS all 
MATCH (c:Challenge)<-[:PART_OF]-(:Entry)-[:POSTED_BY]->(u) 
WITH all + COLLECT(c) AS all 
UNWIND all AS c 
MATCH (e:Entry)-[:PART_OF]->(c) 
RETURN DISTINCT e;