怎么查询到一条链路的起始节点
发布于 3 年前 作者 mozi_1234 773 次浏览 来自 问答

比如链路为node1->node2->node3->node4->node5->node6->node7

MATCH p= (n0)-[:Call*1…10]->(n7) where n7.component=‘Lettuce’ RETURN p LIMIT 25

这样查出来的是整个链路,怎么能返回n0节点?

多谢大家了

3 回复

找到答案了了,顺手分享下 https://stackoverflow.com/questions/26317660/how-to-return-nodes-between-a-node-and-the-top-of-a-tree-in-neo4j?r=SearchResults

MATCH (n0)-[:Call*0…]-(n1) WHERE NOT(()-[:Call]->(n0)) RETURN n0;

感谢分享。 cypher有个一个函数叫startnode() https://neo4j.com/docs/cypher-manual/4.2/functions/scalar/#functions-startnode 感觉用官方函数可能会简单,并且效率和稳定性可能更好些

@derek 嗯,之前试过这个命令。 只不过我查询的时候,可能存在的链路比较长, 比如 MATCH (n0)-[r:Call*1…10]->(n2) RETURN startnode® ,我试了下这个时候中间的关系是不能用r来标识的,所以上面的这个语句没有办法执行

回到顶部