我有一个Neo4j图,其中包含PI和官员节点,以及它们之间的关系(每个节点都有一个机构属性)。我正在尝试为每个PI创建一个inst_list属性,列出所有边缘的所有机构属性。我仍在学习Cypher的方法,但对于为什么这只是为每个PI创建一个空数组感到困惑:
MATCH (p:pi:DOE)-[a:award]-(o:officer:DOE)
WITH pi, a, COLLECT(distinct a.instituion) as insts
SET pi.inst_list=insts
似乎这是COLLECT的一个问题,如
MATCH (p:pi:DOE)-[a:award]-(o:officer:DOE)
WITH a.institution AS insts
RETURN insts
返回所有预期值。
答案 0 :(得分:4)
您只需要从WITH子句中删除a
。
MATCH (p:pi:DOE)-[a:award]-(o:officer:DOE)
WITH p, COLLECT(distinct a.institution) as insts
SET pi.inst_list=insts
通过加入a
,您没有为每个institution
收集p
属性,而是为每个p
和a
收集了什么都不做。
我还假设你的意思是p
而不是pi
;在上面的查询中,p
是标识符,pi
是标签之一。您在institution
中也有一个拼写错误,这可能是您的数组为空而不是单个值的原因。