【问题标题】:Cypher Access Nodes of Variable Length Path可变长度路径的密码访问节点
【发布时间】:2016-07-01 18:52:30
【问题描述】:

我有以下问题:

我有一个像这样的MATCH 子句:

MACTH (A)-[*1..]->(B)

现在,如果此模式匹配,我需要以某种方式复制 -[*1..]-> 部分并将其中具有特定类型的所有节点替换为另一种类型的节点。

例如,如果我有这个图表:

(X1:A)-[:r]->(X2:B)-[:r]->(X3:E)-[:r]->(X4:A)

我可能想在应用规则 MACTH (A:A)-[*1..]->(B:A) something something 后得到这个图表

(X1:A)-[:r]->(X2:B)-[:r]->(X3:E)-[:r]->(X4:A) , (X1)-[:r]->(X5:C)-[:r]->(X3)-[:r]->(X4)

通过复制(A)(B) 之间的路径并将B 类型的所有节点替换为C 类型

但是如何访问查询的-[*1..]-> 部分?

【问题讨论】:

    标签: neo4j cypher variable-length


    【解决方案1】:

    试试这个

    Match (p:Person)-[:RELATED*1..]->(e) 
    with collect(distinct(id(e))) as ids Match (c:Country) where id(c) in ids 
    remove c:Country set c:NewLabel 
    return *
    

    关于数据

    Create (p:Person)-[:RELATED]->(b:Person)-[:RELATED]->(c:Client)-[:RELATED]->(e:Country) return *
    

    【讨论】:

    • 这会更改c 的标签。但是,我如何复制该新路径,以便最终得到两个版本的 c(c:Countryc:NewLabel)?
    • 我没能理解你最后想从你的数据库中得到什么?是否应该有两个不同的节点,一个带有标签 Country 另一个带有标签 NewLabel?
    • 是的。我想复制路径并在复制路径中将标签为 1 的节点更改为标签为 2 的节点。
    • 据我了解,复制所有路径还有另一个问题。要处理它,有实验装置neo4j.com/docs/stable/… 你也可以看看这个问题stackoverflow.com/questions/35586224/… 也许还有另一种方法,但我的知识不足以回答这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    相关资源
    最近更新 更多