neo4j-过滤重复项,与顺序无关

时间:2018-07-29 12:22:23

标签: database graph neo4j cypher

考虑以下Cypher查询:

MATCH (p1:Person)-[:TWEETED]->(tweet:Tweet)<-[:TWEETED]-(p2:Person)
RETURN p1.name, p2.name

此查询返回以下结果:

╒══════════════════════════╤══════════════════════════╕
│"p1.name"                 │"p2.name"                 │
╞══════════════════════════╪══════════════════════════╡
│"john"                    │"bob"                     │
├──────────────────────────┼──────────────────────────┤
│"bob"                     │"john"                    │
├──────────────────────────┼──────────────────────────┤
.....

无论哪种direction/order,我都只获取其中一个结果会更好。如何过滤结果以删除这些重复项?

1 个答案:

答案 0 :(得分:1)

您可以在两个节点的图形id()上添加限制,以过滤出重复项:

MATCH (p1:Person)-[:TWEETED]->(tweet:Tweet)<-[:TWEETED]-(p2:Person)
WHERE id(p1) < id(p2)
RETURN p1.name, p2.name