【问题标题】:How to add multiple values to a property in neo4jNeo4j中如何为一个属性添加多个值
【发布时间】:2015-06-15 09:44:39
【问题描述】:

我是 neo4j 的新手,正在尝试将多个值添加到节点的属性中。怎么做?

 create (e:Employee{name:"Sam",languages:["C","C#"]})

试过了,但没有找到任何合适的方法来为一个属性添加多个值。

【问题讨论】:

  • 您的查询应该可以工作,除了 C# 后面缺少的 " 但我想这是一个错字,您更确切地想要什么?
  • 我如何将值添加到属性语言以及稍后如何使用 CYPHER 查询相同的值。目前我猜它被视为字符串,
  • 语法似乎工作得很好。这个问题不是很清楚,并且在 SO 中增加了关于这个主题的现有问题堆。建议将该问题与任何类似问题合并,以便读者清楚了解

标签: java neo4j


【解决方案1】:

属性不能有对象值。如果您希望在 language 上存储多个属性,并且这些属性都属于该语言而不属于任何其他实体,那么您应该将 Language 建模为一个节点。如果需要,您也可以存储员工和语言之间关系的属性。

然后你会得到这样的结果:

create (l:Language {name:"C", otherProperty:"property value"})
create (e:Employee {name:"Sam"})
create (e)-[:SPEAKS {level:"Fluent"}]->(l)

【讨论】:

    【解决方案2】:

    实际上,您可以在属性中包含数组值。您应该能够像这样创建它们:

    CREATE (n:Node { color: ['Red', 'Blue']})
    RETURN n
    

    在你的情况下:

    CREATE (e:Employee { name:"Sam",languages: ["C", "C#"]})
    RETURN e
    

    运行良好(您可以在http://console.neo4j.org/ 中查看)

    请记住,数组中的所有值必须是同一类型,只能是字符串或整数等。您可以在此处找到更多信息 -> http://neo4j.com/docs/stable/rest-api-property-values.html

    但是,鉴于CC#Sam 知道的语言,这不是该特定示例的最佳方法,您应该将它们作为Sam 通过某种Knows 关系指向的不同节点.

    【讨论】:

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