今天我正在为我的图形的某些部分编写DELETE查询,但我遇到了一些问题OPTIONAL MATCH.
首先是示例图:
http://console.neo4j.org/r/micnvv
和
http://console.neo4j.org/?id=og6d9s
我想编写一个删除所有foo和bar实例的查询,问题是有时fooParent不存在,还有一些情况,单个foo将不连接到任何bar.由于这些条件,我决定匹配fooParent和查询中的bar节点OPTIONAL MATCH.
现在在第一个图形(其中fooParent和bar节点存在)中我想要的所有东西都匹配(foo1和所有bar节点)使用
MATCH (foo:Foo { customId: '1' })
OPTIONAL MATCH foo -[rel]-> bar,(fooParent: FooParent)-[fooParentRel]-> foo
RETURN foo, bar
Run Code Online (Sandbox Code Playgroud)
在第二个图中,我遇到的情况是fooParent,给定foo不存在且相同的查询与bar节点不匹配- 只有foo匹配,如您所见.
我认为这OPTIONAL MATCH是我的方式,如果我的,但它似乎没有工作.
是的,因为一个OPTIONAL MATCH条款
null.在这种情况下,您OPTIONAL MATCH包含两个部分:它尝试匹配Foo具有传出关系(到某个条形图)和传入关系到a的节点FooParent.
解决方案是拆分OPTIONAL MATCH:
MATCH (foo:Foo { customId: '1' })
OPTIONAL MATCH foo -[rel]-> bar
OPTIONAL MATCH (fooParent: FooParent)-[fooParentRel]-> foo
RETURN foo, bar
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
94 次 |
| 最近记录: |