在一个neo4j CREATE语句中创建多个节点

时间:2016-04-05 05:20:31

标签: neo4j

Create (sub:Subscription {name:"Paul",mobile:"8763xxxxx",email:"info@aliant.com"}),
Create (sub:Subscription {name:"Peter",mobile:"87638xxxxx",email:"info@aliant.com"}),
Create (sub:Subscription {name:"James",mobile:"87638xxxxx",email:"info@aliant.com"}),
Create (sub:Subscription {name:"Bill",mobile:"87638xxxxx",email:"info@aliant.com"})
Return sub;

我是Neo4j / Cypher的新手......为什么我在第二次创建时遇到“意外”C“错误。我正在使用2.3.2社区版。手册说这应该可行.. 。我也尝试了手册中的参数示例部分12.1,它也不起作用。

2 个答案:

答案 0 :(得分:0)

试试这个:

UNWIND [{name:"Paul",mobile:"8763xxxxx",email:"info@aliant.com"}, {name:"Peter",mobile:"87638xxxxx",email:"info@aliant.com"}, ] as subscriptions
CREATE (sub:Subscription)
SET sub=subscriptions

或者这个:

[注意:在Neo4j 2.3版中不推荐使用此语法。它可能会在未来的主要版本中删除。有关如何实现相同功能的信息,请参阅上面的代码UNWIND。 ]:

{
  "subscriptions" : [ {
    "name" : "A",
    "email" : "a@b.c"
  }, {
    "name" : "B",
    "email" : "x@y.z"
  } ]
}

Create (sub:Subscription: {subscriptions}) Return sub

请参阅,如果有帮助,请参阅此link

答案 1 :(得分:0)

逗号是非法的 - 这种形式有效:

Create (sub1:Subscription {name:"Paul",mobile:"8763xxxxx",email:"info@aliant.com"}) 
Create (sub2:Subscription {name:"Peter",mobile:"87638xxxxx",email:"info@aliant.com"}) 
Create (sub3:Subscription {name:"James",mobile:"87638xxxxx",email:"info@aliant.com"})
Create (sub4:Subscription {name:"Bill",mobile:"87638xxxxx",email:"info@aliant.com"}) 
Return sub1, sub2, sub3, sub4 

如果你不需要值,那么这只会创建节点:

Create (:Subscription {name:"Paul",mobile:"8763xxxxx",email:"info@aliant.com"}) 
Create (:Subscription {name:"Peter",mobile:"87638xxxxx",email:"info@aliant.com"}) 
Create (:Subscription {name:"James",mobile:"87638xxxxx",email:"info@aliant.com"})
Create (:Subscription {name:"Bill",mobile:"87638xxxxx",email:"info@aliant.com"})