我正在尝试在收集节点时将它们的属性与其关系的属性结合起来。但我的尝试似乎不起作用......
我的查询如下所示:
MATCH (foo:Foo)-[rel:Rel]->()
RETURN collect(properties(foo) + properties(rel)) as myCollection
编辑:
我需要一个不使用APOC等其他插件的解决方案
谢谢
答案 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