我正在尝试使用两个列表在密码中创建节点/关系。使用comma-separated list的解决方案,我当前的解决方案是:
MERGE (t:Test)
WITH t
UNWIND ["a","b"] AS name // first list
MERGE (t)-[:FOO_REL]->(a:Foo { name: name })
WITH DISTINCT t
UNWIND [100,200] AS id // second list
MERGE (t)-[:BAR_REL]->(b:Bar { id: id })
这有效,只要两个列表中都有条目。但是,如果第一个列表为空,则第二个列表永远不会展开(并且不会创建:Bar
节点)。
我该如何链接UNWIND
以便可以在单个查询中从两个单独的列表创建节点/关系?
答案 0 :(得分:2)
我最终使用FOREACH
而不是UNWIND
。由于此操作在内部查询周围使用了括号,因此它们之间的界限很明显:
MERGE (t:Test)
FOREACH (name in ["a","b"] |
MERGE (t)-[:FOO_REL]->(a:Foo { name: name })
)
FOREACH (id in [100,200] |
MERGE (t)-[:BAR_REL]->(b:Bar { id: id })
)