【发布时间】:2017-08-11 20:28:39
【问题描述】:
一个 Neo4j 新手,我一直在研究一个看起来应该很简单的查询,但我在找出正确的 Cypher 时遇到了问题。鉴于以下模型,我想获取所有 Objects(及其 Statuses),它们是 obj1 的替代品,它们要么具有 Status type of 2,要么具有 no Status。我想要的结果是返回ob3 节点,它是Status 节点以及ob4 节点。
到目前为止,我最接近的是:
match (obj1:Object{nm:'obj1'})-[:REPLACES*]->(repObj)
optional match p=(repObj)-[:HAS_STATUS]->(stat)
where stat.type = 2
return repObj, p
这会返回我想要的节点,但也会返回 ob2 节点,而没有它的 Status 节点。如果我保留上述查询但只返回 p 变量,我会得到 ob3 节点,它是 Status,但不会返回 ob4 节点。我尝试了不同查询的组合,包括WITH、NOT 和UNION 子句,但我觉得我错过了一些非常简单的东西。
【问题讨论】: