我有一个密码查询,它返回推荐给用户关注的用户列表,但是在执行密码时得到重复的结果。
这是密码查询:
MATCH (user:User { id: $userId })
MATCH (user)-[interestRel:INTERESTED_IN]->()<-[:INTERESTED_IN]-(recommendedUsers)
WITH DISTINCT recommendedUsers, interestRel, user
WHERE NOT recommendedUsers = user AND
NOT exists((user)-[:FOLLOWING]->(recommendedUsers))
RETURN recommendedUsers {
.id,
following: false
} ORDER BY interestRel.interestLevel DESC SKIP $skip LIMIT $limit
我知道会有重复,因为一个用户可能是INTERESTED_IN
多个节点,所以在INTERESTED_IN
遍历关系时,对于每个有INTERESTED_IN
关系的节点,都会返回重复的用户。但是正在返回DISTINCT
用户,所以我不明白为什么仍然返回重复用户。
我注意到,当INTERESTED_IN
关系绑定到interestRel
查询中使用的变量 ( ) 时,就会返回重复的结果。
如何摆脱重复项并仍然引用INTERESTED_IN
( interestRel
) 关系?