【问题标题】:Cypher: Query all nodes in a hierarchyCypher:查询层次结构中的所有节点
【发布时间】:2015-03-10 23:43:50
【问题描述】:

我有多个层次结构,每个层次结构代表一个组织。

只需选取 2 个样本层次结构...

层次结构 1:

Company{name:'ABC', CompanyId:1,}

层次结构 2:

Company{name:'XYZ', CompanyId:21,}

异常可以进一步有子级(动态添加为检测到,一个是实例)。我们的后端引擎查询整个层次结构。

考虑到可能附加到 Anomaly 的动态节点,我如何概括密码?

match srvhier=(:Company)]-() 返回多个密码 match srvhier=(:Company)]-(:Instance) 除非我有实例,否则不会返回任何数据

谢谢。

【问题讨论】:

  • 你们的关系名称是什么?实例是否处于异常状态?你想返回什么,是异常还是实例?我有点理解你的设置,但我不明白你在问什么问题。概括什么密码,返回什么?
  • 实例处于异常状态。但实例不是强制性的。因此,层次结构可以有一个实例,或者很可能以异常结束。处理层次结构的后端引擎需要整个转储。因此正在寻找一个通用密码,它可以返回整个层次结构,有或没有实例,可能是这种情况。希望这可以澄清。

标签: neo4j cypher


【解决方案1】:

您试图在示例中将 Instace 指定为标签。 如果您需要所有节点信息,那么您可以这样尝试

MATCH path= (:Company)<-[*]-(Instance)    
RETURN path

之后,您可以使用 extract() 方法检索信息。

这是它的参考http://neo4j.com/docs/stable/query-functions-collection.html#functions-extract

【讨论】:

    【解决方案2】:

    我查看了 Satish 的回复以及这个 - how to get the last node in path in neo4j?

    可以想出符合我要求的密码...

    MATCH path= (:Company {company_id:240})<-[*]-()    
    WITH COLLECT(path) AS paths, MAX(length(path)) AS maxLength 
    WITH FILTER(n IN paths WHERE length(n)= maxLength) AS compArray
    RETURN EXTRACT(n IN compArray | LAST(nodes(n))) as lastN, compArray
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      相关资源
      最近更新 更多