我有一个图表,其中节点链接到包含属性的其他节点。例如:
(:Person {Name: 'A'}) -[:OWNS]-> (:Object {Name: 'Car', Value: 2})
(:Person {Name: 'A'}) -[:OWNS]-> (:Object {Name: 'Computer', Value: 1})
是否有可能(如何)从密码查询中报告标记数据。预期格式最好是:
{Person: 'A', owns: {Car: 2, Computer: 1}}
我目前的查询是:
match (p:Person) -[:OWNS]-> (o:Object)
return {Person: p.Name, owns: collect({name: o.Name, value: o.Value})
返回
{Person: 'A', owns: [{name: 'Car', value: 2}, {name: 'Computer', value: 1}]}
不幸的是,我写不出像:
return {Person: p.Name, owns: collect({o.Name: o.Value})
答案 0 :(得分:0)
假设一个人可以拥有任意数量的汽车和电脑(包括0):
OPTIONAL MATCH (p:Person)-[:OWNS]->(car:Object { Name: 'Car' })
OPTIONAL MATCH (p)-[:OWNS]->(comp:Object { Name: 'Computer' })
RETURN { Person: p.Name, owns: { Cars: COLLECT(car.Value), Computers: COLLECT(comp.Value)}} AS result;
以下是人A
的2辆车和0台电脑的示例结果:
{Person:"A", owns:{"Cars":[2,3],"Computers":[]}}
答案 1 :(得分:0)
1:获取所有节点:-START n=node (*) RETURN n; or match (n) return n
2:显示节点和关系:-MATCH (n) MATCH (n)-[r]-() RETURN n,r
或START n=node(*) MATCH (n)-[r]->(m) RETURN n,r,m
3:匹配节点和关系:-MATCH (a:Policy)-[:APPLIES_TO]-(Cluster) WHERE a.name = "pol-1nils" RETURN a, Cluster
4:获取特定节点的所有对象:-MATCH (list:Policy) return list
5:绑定到两个节点之间的实体:-match (a:WorkLoad)-[b:APPLIES_TO]->(c:Policy) where c.name = "shamshad" return a,b,c;