【问题标题】:How to create multiple nodes with cypher in neo4j如何在 Neo4j 中使用 cypher 创建多个节点
【发布时间】:2014-04-15 18:08:11
【问题描述】:

我想使用单个密码查询创建多个断开连接的节点

文档说:

使用属性参数创建多个节点。通过为 Cypher 提供一组地图,它将为每个地图创建一个节点。

CREATE (n { props })
RETURN n

在我尝试过的 neo4j rest web 控制台中(以及许多其他东西)

CREATE (n [{a:1,b:2}, {a:1,b:2}]) RETURN n

但是收到这个错误

无效输入“[”:预期的空格、注释、节点标签、MapLiteral、参数、“)”或关系模式(第 1 行,第 11 列) "创建 (n [{a:1,b:2}, {a:1,b:2}]) 返回 n"

是否可以做我正在尝试的事情,如果可以,如何做?

【问题讨论】:

    标签: neo4j graph-databases


    【解决方案1】:

    它必须是 http-api 或 java-api 的参数。

    CREATE (n { props })
    RETURN n
    
    {props:[{a:1,b:2}, {a:1,b:2}]}
    

    或者你可以使用foreach,即使是文字数组

    FOREACH (props IN [{ a:1,b:2 }, { a:1,b:2 }]| 
             CREATE ({ a:props.a,b:props.b }))
    

    【讨论】:

      【解决方案2】:

      我尝试了 Michael Hunger 的答案,但没有奏效。可能是旧版本?我正在使用 3.1.3

      这对我有用

      UNWIND {props} AS map
      CREATE (n)
      SET n = map
      

      您需要将 {props} 作为参数传递给 java api 的地方

      这是 Groovy 中的一个简单示例:

      List<Map<String, String>> props = list.collect{ C c -> ["name": c.name] }
      neo4jOperations.query("unwind {props} as map create (c) set c = map", ["props": props])
      

      【讨论】:

        【解决方案3】:

        首先,免责声明:我不是 Neo4j 方面的专家,而只是一个没有经验的图形爱好者。我正在使用 Neo4j 浏览器版本:4.0.1 + Neo4j 服务器版本:3.5.12(企业版)。

        在从互联网上尝试了一百万个食谱失败后,我终于意识到,除非您在 Neo4j 桌面查询编辑器上独立键入它们,否则它们都不会起作用!

        或者,如果您想将所有语句保留在同一个查询窗口中,您可以在每个 cypher 语句后键入一个分号 (';')。在这种情况下,您需要允许多语句,勾选 Neo4j 浏览器设置 > 启用多语句查询编辑器。

        所以,为了让像我这样的新手更明确和更容易,这里我们有一个工作示例。

        最初,在查询编辑器中,输入:

        :param props => [{name: 'John', age: 18}, {name: 'Phill', age: 23}]
        

        这会将上述参数保存在您系统中的对象props下为:

        {
        "props": [
        {
          "name": "John",
          "age": 18
        },
        {
          "name": "Phill",
          "age": 23
        }
        ]
        }
        

        然后,在全新的查询编辑器窗口中,输入:

        FOREACH (props IN $props | CREATE (a {name:props.name, age:props.age}))
        

        希望你能收到消息:

        Created 2 nodes, set 2 properties, completed after 7 ms.
        

        然后,为了从您的系统中清除这些参数,以便它们不会干扰任何其他参数,请键入:

        :params {}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-04
          • 1970-01-01
          • 2017-12-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多