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并不难
台阶
- 减少:
- 要筛选的列表:
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)