我想在Neo4j中创建和操作属性数组。我是Graph Database和Neo4j的新手。我正在使用订阅组件构建成员资格图数据库。我需要该成员与每个订阅付费月份的数组属性相关联的LEDGER节点。我知道我可以为每次付款创建一个节点...但我试图整齐地将成员订阅分配给一个节点。根据我的理解到目前为止,我不能在数组属性中有一个键/值对...但是我可以将值分配给属性数组:
SET Ledger.AmtPaid [index] = amt 或者类似的东西...当我尝试这个时我会遇到错误:
CREATE (m:Member {name: "Michael"})
CREATE (l:Ledger {name: "Member Ledger", AmtPaid :[]})
CREATE (m)-[:PAID_INTO]->(l)
MATCH (m {name:"Michael"})--(l)
SET l.AmtPaid[0]="50"
Return l.AmtPaid[0];
答案 0 :(得分:1)
不要忘记在查询中使用标签和rel-type
不幸的是,写入索引不起作用,因为Cypher将其集合视为不可变的。
您可以这样做:
MATCH (m:Member {name:"Michael"})-[:PAID_INTO]->(l)
SET l.AmtPaid = ["50"] + l.AmtPaid[1..]
Return l.AmtPaid[0];
or
MATCH (m:Member {name:"Michael"})-[:PAID_INTO]->(l)
SET l.AmtPaid = l.AmtPaid + ["50"]
Return l.AmtPaid[0];
or
MATCH (m:Member {name:"Michael"})-[:PAID_INTO]->(l)
SET l.AmtPaid =
reduce(a=[], idx in range(0,size(l.AmtPaid) |
a + case idx when 0 then ["50"] else [l.AmtPaid[idx]] end)
Return l.AmtPaid[0];