求助啊,大佬们
match p=(n)-[*3]-() where size((n)–())=3 return p limit 1 如果你的需求是路径中包含的所有节点边数不超过100,纯cypher应该无法实现,需要借助apoc的函数实现。apoc实现不了的话,考虑一下自己实现遍历过程。可以参考这个 neo4j自定义函数和过程。 下面这个apoc的过程我没有试过能不能做你说那种遍历,但是应该对于你的需求会有帮助。
/** * 可配置的路径扩展:apoc.path.expandConfig * 参数名 类型 缺省值 可为空? 说明 * startNode LONG - 节点id,或者节点列表 无 否 遍历的起始节点 * {configuration} 配置选项列表 NULL 是 具体配置项参见下面的说明 * minDepth INTEGER 0 是 最小遍历层次数 * maxDepth INTEGER -1 是 最大遍历层次数。-1表示不限制,直到不再有可遍历的路径为止 * relationshipFilter 字符串 NULL 是 关系过滤器规则 * abelFilter 字符串 NULL 是 标签过滤器规则 * bfs 布尔值 false 是 true–宽度优先遍历 false–深度优先遍历 * uniqueness 字符串 NULL 是 唯一性规则 * filterStartNode 布尔值 false 是 是否过对起始节点应用过滤规则 * limit 正整数 -1 是 返回路径的数目上限 * optional 布尔值 false 是 true–如果没有找到复合条件的路径,返回NULL值的序列;false–如果没有找到复合条件的路径,则不返回 * endNodes 节点列表 NULL 是 遍历终止节点列表 * terminatorNodes 节点列表 NULL 是 终止节点列表 * sequence 字符串 NULL 是 节点和标签过滤规则序列。指定sequence规则后labelFilter和relationshipFilter的内容会被忽略。 * beginSequenceAtStart 布尔值 true 是 是否对起始节点应用sequence中定义的规则 * * **/