Neo4j 在节点或关系中添加映射作为属性
有没有办法将地图添加为属性?我想将地址行1、2等存储在address属性本身中 类似的东西-Neo4j 在节点或关系中添加映射作为属性,neo4j,cypher,Neo4j,Cypher,有没有办法将地图添加为属性?我想将地址行1、2等存储在address属性本身中 类似的东西- RETURN {address: {firstline:"a", secondline:"b"}, name:"ABC"} 然而,当我在CREATE或SET中尝试此操作时,会出现错误 我试过这个- create (a:Person {name: "ABC", address: {firstline:"a", secondline:"b"}}) 错误- Property values can only
RETURN {address: {firstline:"a", secondline:"b"}, name:"ABC"}
然而,当我在CREATE或SET中尝试此操作时,会出现错误
我试过这个-
create (a:Person {name: "ABC", address: {firstline:"a", secondline:"b"}})
错误-
Property values can only be of primitive types or arrays thereof
不支持,嵌套数组不受支持,同样在图形中也没有意义,因为您通常会将地址建模为与人不同的节点
(person:Person {name:"ABC"})-[:CURRENT_ADDRESS]->(addr:Address {firstLine:"a", secondLine:"b"})
不支持,嵌套数组不受支持,同样在图形中也没有意义,因为您通常会将地址建模为与人不同的节点
(person:Person {name:"ABC"})-[:CURRENT_ADDRESS]->(addr:Address {firstLine:"a", secondLine:"b"})
无法将地图添加为属性。您应该将地址
创建为单独的节点,并与人员
建立关系。或将地址添加为property array
到Person
,例如
(a:Person {name: "ABC", address: ["a", "b"]})
当然,您以后必须将该数组转换回应用程序中的某个位置,以获得最初需要的映射。不可能将映射添加为属性。您应该将地址
创建为单独的节点,并与人员
建立关系。或者将地址作为属性数组
添加到人员
,例如
(a:Person {name: "ABC", address: ["a", "b"]})
当然,您以后必须将该数组转换回应用程序中的某个位置,以获得最初需要的映射。您可以通过将嵌套映射序列化为JSON字符串并推送到节点来实现这一点。如果你的要求是
{address:{firstline:"a",secondline:"b"},name:"ABC"}
然后,如果值在neo4j中不是有效类型,则遍历映射,然后将其转换为JSON字符串。你皈依了吗
{firstline:"a",secondline:"b"}==>json string.
在密码中,它充当普通字符串,因此可以工作。
从节点检索数据时,将属性反序列化为本机对象
这种方法的缺点是需要反序列化每个属性,因为我们不知道值是普通字符串还是包含嵌套映射的JSON字符串
因此,我的解决方案是,当您转换为JSON字符串时,请注意哪些键正在转换为JSON,并使用特定键将此信息保存在节点中,例如:JSON\u keys=['address']
仅读取时,转换json_密钥数组中的那些密钥
1)your map = {address: {firstline:"a", secondline:"b"}, name:"ABC"}
2)convert to json = {address: '{firstline:"a", secondline:"b"}', name:"ABC"}
3)note which keys are converted = {address: '{firstline:"a", secondline:"b"}', name:"ABC",json_keys=["address"]}
可以通过将嵌套映射序列化为JSON字符串并推送到节点来实现这一点。如果你的要求是
{address:{firstline:"a",secondline:"b"},name:"ABC"}
然后,如果值在neo4j中不是有效类型,则遍历映射,然后将其转换为JSON字符串。你皈依了吗
{firstline:"a",secondline:"b"}==>json string.
在密码中,它充当普通字符串,因此可以工作。
从节点检索数据时,将属性反序列化为本机对象
这种方法的缺点是需要反序列化每个属性,因为我们不知道值是普通字符串还是包含嵌套映射的JSON字符串
因此,我的解决方案是,当您转换为JSON字符串时,请注意哪些键正在转换为JSON,并使用特定键将此信息保存在节点中,例如:JSON\u keys=['address']
仅读取时,转换json_密钥数组中的那些密钥
1)your map = {address: {firstline:"a", secondline:"b"}, name:"ABC"}
2)convert to json = {address: '{firstline:"a", secondline:"b"}', name:"ABC"}
3)note which keys are converted = {address: '{firstline:"a", secondline:"b"}', name:"ABC",json_keys=["address"]}
你好如果您在Stack overflow签出以备将来使用,那就更好了-谢谢你好!如果您在Stack overflow签出以备将来使用,那就更好了-非常感谢。