我有一些链表结构:
(post:Post)-[:NEXT]->(next_post:Post)-[:NEXT]->....
我可以通过简单的陈述查询:
MATCH (start:Post{Id:{post}})-[:NEXT*0..19]->posts
RETURN posts
它回复了20个帖子。
但如果我的查询是这样的:
MATCH (start:Post{Id:{post}})-[:NEXT*0..19]->post
WHERE not post:Deleted
RETURN posts
然后我肯定不会得到20个帖子(即如果我有3个帖子:已删除标签,那么我将获得17个帖子)
如何在某些条件下实现固定长度的可变路径?
总的来说,我希望在变量长度路径中获得相同的固定数量的节点,尽管有谓词,但是上限。这样的事情:
MATCH (start:Post{Id:{post}})-[rels:NEXT*0..]->post
WHERE ANY (rel IN rels WHERE NOT ENDNODE(rel):Deleted)
RETURN post
但是有遍历的上限。
答案 0 :(得分:1)
事先过滤掉已删除的帖子:
MATCH (posts:Post)
WHERE NOT posts:Deleted
WITH posts
MATCH (start:Post{Id:{post}})-[:NEXT*0..19]->(posts)
RETURN posts