【问题标题】:need help on cypher query在密码查询方面需要帮助
【发布时间】:2013-11-13 16:48:51
【问题描述】:

我需要一些帮助来进行密码查询。 在我的 neo4j 数据库中,我有由关系节点(不是关系)链接的元素节点,我想找到从节点继承的所有节点。例如,如果我有 B-->A、c-->B 和 D-->A,其中“-->”表示“继承”,当我要求检索哪些元素时,我想检索 B、C 和 D从 A 继承。

我已经编写了一个在单个级别上运行良好的密码查询(我将“A”替换为节点 ID):

Start 
node=node(A) 
match
(node)-[:IS_SOURCE_OF]->relation<-[:IS_TARGET_OF]-target
where
relation.relationType="INHERIT"
return target.uuid

此查询返回 B 和 D,但我也不知道如何返回 C。

有人可以帮帮我吗?

非常感谢

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    Cypher 允许在单个关系上进行可变长度匹配,但不是您设计图表的方式。要在您的示例中找到节点 c,您需要执行以下操作:

    Start node=node(A) 
    match (node)-[:IS_SOURCE_OF]->(r1)<-[:IS_TARGET_OF]-()-[:IS_SOURCE_OF]->(r2)<-[:IS_TARGET_OF]-(target)
    where
    r1.relationType="INHERIT" AND r2.relationType="INHERIT"
    return target.uuid
    

    但是,如果您不能显式地对继承关系进行建模,您应该退后一步重新考虑 - 在这种情况下,单个查询会捕获所有继承的节点

    start node=node(a)
    match node-[:INHERITS*]->target
    return target.uuid
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多