Neo4j 如何从apoc.path.expandConfig或类似文件中排除/黑名单关系类型?

Neo4j 如何从apoc.path.expandConfig或类似文件中排除/黑名单关系类型?,neo4j,cypher,neo4j-apoc,Neo4j,Cypher,Neo4j Apoc,所以我试图找到一对不同类型的节点之间的路径。代码如下所示。该图非常大,并且有许多不同类型的关系,其中一些我想从路径中排除/列入黑名单,因为它们非常冗余/无趣 从我看到的apoc.path.expandConfig有什么方法可以实现这一点吗 MATCH (sourceNode:SourceLabel {symbol: "<source node>"}) MATCH (targetNode:TargetLabel {name:"<target node

所以我试图找到一对不同类型的节点之间的路径。代码如下所示。该图非常大,并且有许多不同类型的关系,其中一些我想从路径中排除/列入黑名单,因为它们非常冗余/无趣

从我看到的
apoc.path.expandConfig
有什么方法可以实现这一点吗

MATCH (sourceNode:SourceLabel {symbol: "<source node>"})
MATCH (targetNode:TargetLabel {name:"<target node>"})
CALL apoc.path.expandConfig(g, {
    labelFilter: "IntermediaryLabel1, IL2a|IL2b|IL2c, >TargetLabel",
    minLevel: 1,
    maxLevel: 3,
    terminatorNodes: [targetNode],
    uniqueness: "NODE_PATH",
    limit: 50
})
YIELD path
RETURN path, length(path) AS hops
ORDER BY hops
匹配(sourceNode:SourceLabel{symbol:“”)
匹配(targetNode:TargetLabel{name::})
调用apoc.path.expandConfig(g{
labelFilter:“中间标签1,IL2a | IL2b | IL2c,>目标标签”,
级别:1,
最高级别:3,
terminatorNodes:[targetNode],
唯一性:“节点路径”,
限额:50
})
屈服路径
返回路径,长度(路径)为跃点
啤酒花订单

我遇到过这个问题,但直到今天看到你的问题,我才坐下来解决它。如果你和我有很多关系,我会感觉到你的痛苦。理想情况下,他们最终会为rel加上一个减法,但现在DIY并不难

台阶

  • 获取所有关系的列表
  • 减去你不想要的
  • apoc呼叫中使用的格式
  • 用来拼凑这个的参考文献

    • 减少:
    • 要筛选的列表:

    您可以只指定一个
    relationshipFilter
    ,它将列出您想要的关系类型。@cybersam这是一个合理的方法,但如果您有大量的关系,它将变得不切实际
    // get all relationships
    CALL db.relationshipTypes() yield relationshipType WITH collect(relationshipType) as rt
    // remove unwanted relationships
    WITH [n IN rt WHERE NOT n IN ['PERTURBS','CAUSES_SIDE_EFFECT','TREATS','REPURPOSED_INDICATION','SUBSET_OF','GENE_EC','GENE_GENE']] as rt2
    // format for use in apoc call
    WITH REDUCE(ms = "",word IN rt2 | ms+word+'|') as js
    // remove trailing pipe
    WITH LEFT(js, SIZE(js)-1) as relationshipWhiteList
    // your cypher here (and use the variable relationshipWhiteList)