Neo4j 可变路径的固定长度

Neo4j 可变路径的固定长度,neo4j,cypher,Neo4j,Cypher,我有一些链表结构: (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 R

我有一些链表结构:

(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
MATCH (start:Post{Id:{post}})-[rels:NEXT*0..]->post
WHERE ANY (rel IN rels WHERE NOT ENDNODE(rel):Deleted)
RETURN post
那么我肯定不会得到20篇文章(即,如果我有3篇带有:Deleted标签的文章,那么我将得到17篇文章)

如何在某些条件下实现可变路径的固定长度

总的来说,我希望在可变长度路径中获得相同数量的节点,尽管有谓词,但具有上界。诸如此类:

MATCH (start:Post{Id:{post}})-[:NEXT*0..19]->post
WHERE not post:Deleted
RETURN posts
MATCH (start:Post{Id:{post}})-[rels:NEXT*0..]->post
WHERE ANY (rel IN rels WHERE NOT ENDNODE(rel):Deleted)
RETURN post

但是有遍历的上限。

预先过滤掉删除的帖子:

MATCH (posts:Post)
WHERE NOT posts:Deleted
WITH posts
MATCH (start:Post{Id:{post}})-[:NEXT*0..19]->(posts)
RETURN posts

你能把你的问题改一下吗?我说不出你们想知道什么。谢谢你们的回答,但这不是我想要的。首先扫描所有帖子,然后从已知帖子遍历到已扫描帖子。想象一下,如果有许多带有:Post标签的节点,那么您需要添加更多的说明。使用示例数据、尝试的查询以及实际输出与预期输出更新您的问题。