neo4j 使用For each创建多个关系

pxq42qpu  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(230)

我尝试在一个Outfit节点和多个Product节点之间建立关系。我可以创建一个新的Outfit节点,然后在此节点和相关的Product节点之间创建关系。但是,在一个查询中没有此问题的解决方案吗?我的意见是,我有一个包含Product Id的数组,然后创建一个新的Outfit节点。对于数组中的每个值,按ID匹配节点,然后为每个值创建关系。
你有什么建议吗?这是一个它应该看起来的例子。
这是我的方法,但是where ID(a)有一个错误。

UNWIND keys({productIds:[1,2,3] }) AS key
Create (o:outfit {name: "Outfit für heute"})
FOREACH(item IN $list[key] 
| Merge(a:article) where ID(a) = item.productIds
| MERGE (o)-[r:includes]->(a)
)

非常感谢!

abithluo

abithluo1#

问题是你用MERGE代替MATCH来表示article,你不能在FOREACH中使用MATCH,你也是一个map的UNWINDING键,但是你没有提取那个键值。它可以简单地这样做,使用IN操作符:

Create (o:outfit {name: "Outfit für heute"})
WITH o
MATCH (a:article) where ID(a) IN [1, 2, 3]
MERGE (o)-[r:includes]->(a)

相关问题