neo4j查询 - 无法组合节点和关系属性

时间:2017-04-15 15:50:56

标签: neo4j

我正在尝试在收集节点时将它们的属性与其关系的属性结合起来。但我的尝试似乎不起作用......

我的查询如下所示:

MATCH (foo:Foo)-[rel:Rel]->()
RETURN collect(properties(foo) + properties(rel)) as myCollection

编辑:

我需要一个不使用APOC等其他插件的解决方案

谢谢

1 个答案:

答案 0 :(得分:1)

Properties()返回一个地图,而不是一个集合,因此你不能以这种方式将它们与Cypher结合起来。

您可以使用APOC Procedures将两张地图合并为一张:

MATCH (foo:Foo)-[rel:Rel]->()
apoc.map.merge(properties(foo),properties(rel)) YIELD value
RETURN collect(value) as props

修改

至于不使用插件的方法,我知道有两个使用Map Projection,但它们都有自己的复杂功能。

首先,如果您知道要获取的所有属性,则可以使用Map Projection在属性映射中明确设置它们:

MATCH (foo:Foo)-[rel:Rel]->()
RETURN foo {.*, relProp1:rel.prop1, relProp2:rel.prop2, relProp3:rel.prop3 ...} as props

或者,您可以设置整个属性映射,但它将是键的值,而不是真正的组合映射:

MATCH (foo:Foo)-[rel:Rel]->()
RETURN foo {.*, relProps:properties(rel)} as props