我正在尝试在 neo4j 版本 1.9M02 上运行以下密码查询
START me=node(2)
MATCH me-[:FOLLOWS]->friends
,friends-[fr:ADDED|STOCKS]->products
,me-[r?]->products
WHERE r is null
RETURN products._id
ORDER BY fr.CreatedOn DESC
SKIP 0
LIMIT 10
我希望得到我的朋友添加或库存的所有产品,这些产品不是我添加或库存的,按关系创建时间排序。此查询返回正确的结果,但具有重复的 products._id 值(一个用户添加了该产品,另一个用户将其储存了)。但我只需要这个 products._id 的一个实例,所以我尝试了
START me=node(2)
MATCH me-[:FOLLOWS]->friends
,friends-[fr:ADDED|STOCKS]->products
,me-[r?]->products
WHERE r is null
RETURN DISTINCT products._id
ORDER BY fr.CreatedOn DESC
SKIP 0
LIMIT 10
(为 products._id 添加了 DISTINCT)但是这次我Unknown identifier fr
出错了。所以我在 RETURN 语句中添加了 fr
START me=node(2)
MATCH me-[:FOLLOWS]->friends
,friends-[fr:ADDED|STOCKS]->products
,me-[r?]->products
WHERE r is null
RETURN DISTINCT products._id,fr
ORDER BY fr.CreatedOn DESC
SKIP 0
LIMIT 10
此查询可以正常工作,但会像以前一样返回重复的产品 ID。
最近几天我只玩过neo4j,所以一点也不专业。如果有人可以在这里帮助我,我将不胜感激。