如何使用neo4j中的输入参数展开?

如何使用neo4j中的输入参数展开?,neo4j,cypher,Neo4j,Cypher,我正在用密码处理这个查询。我想在节点之间建立关系 我试过放松、放松和其他东西。我已经试了两天,不知道怎么做 WITH [ { sender: 416, target: 400, bidirectional: true }, { sender: 416, target: 509, bidirectional: true }, { sender: 416, ta

我正在用密码处理这个查询。我想在节点之间建立关系

我试过放松、放松和其他东西。我已经试了两天,不知道怎么做

WITH 
 [
    {
      sender: 416,
      target: 400,
      bidirectional: true
    },
    {
      sender: 416,
      target: 509,
      bidirectional: true
    },
    {
      sender: 416,
      target: 413,
      bidirectional: true
    }
    ] as relationships
unwind relationships as relation
match (s),(t)
where id(s)=relation.sender and id(t)=relation.target
case relation.bidirectional
    when true
        merge (s)<-[:REL]->(t)
    else
        merge (s)-[:REL]->(t)
与
[
{
发件人:416,
目标:400,
是的
},
{
发件人:416,
目标:509,
是的
},
{
发件人:416,
目标:413,
是的
}
]作为关系
将关系作为关系展开
比赛(s)、(t)
其中id(s)=relation.sender,id(t)=relation.target
格关系
如果是真的
合并(s)(t)
其他的
合并-[:REL]->(t)
我尝试了很多事情,但我无法解决这个问题。一些想法?
提前感谢

neo4j中的所有关系都是单向的。如果您不在乎使用哪个方向,
MERGE
允许您从模式中省略方向(甚至在两个方向上都放置箭头——这有点奇怪和误导),但是只会创建一个关系(如果需要),并且是单向的。因此,
双向
标志是完全不必要的——您可以始终让关系朝着同一方向运行

此外,
大小写
表达式不能执行数据库读取或写入

这个查询(甚至不需要
CASE
表达式)更有意义,并且可以工作:

WITH 
 [
    {
      sender: 416,
      target: 400
    },
    {
      sender: 416,
      target: 509
    },
    {
      sender: 416,
      target: 413
    }
    ] as relationships
UNWIND relationships as relation
MATCH (s), (t)
WHERE id(s)=relation.sender AND id(t)=relation.target
MERGE (s)-[:REL]->(t)

谢谢你的澄清!