我想为Feature节点数组属性'aTags'中的任何'tag'创建一个关系,它等于Tag节点。我尝试过使用FOREACH和UNWIND而没有任何运气。
数据:
的Cypher:
START a=node(*), b=node(*)
FOREACH (a_tag IN a.aTags = b.tag |
CREATE (a)-[:HAS_TAG]->(b) );
提前感谢任何见解!
答案 0 :(得分:1)
怎么样
match (a:Feature)
FOREACH (aTag in a.aTags | merge (b:Tag {name:aTag}) merge (a)-[:HAS_TAG]->(b));
但请注意,如果aTags中存在Tag节点尚不存在的值,则会创建b:Tag。
我使用
在http://console.neo4j.org/r/xc8d0创建了一些数据create (_0:`Tag` {`name`:"tagA"})
create (_1:`Tag` {`name`:"tagB"})
create (_2:`Tag` {`name`:"tagC"})
create (_3:`Tag` {`name`:"tagD"})
create (_4:`Feature` {`aTags`:["tagA"]})
create (_5:`Feature` {`aTags`:["tagB", "tagC"]})
create (_6:`Feature` {`aTags`:["tagA", "tagC"]})
如果这不是您的意思,请告诉我。