Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
neo4j查询-无法组合节点和关系属性_Neo4j - Fatal编程技术网

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

neo4j查询-无法组合节点和关系属性,neo4j,Neo4j,我试图在收集节点的属性时,将节点的属性与其关系的属性结合起来。但我的尝试似乎不起作用 我的查询如下所示: MATCH (foo:Foo)-[rel:Rel]->() RETURN collect(properties(foo) + properties(rel)) as myCollection 编辑: 我需要一个解决方案,而不使用其他插件,如APOC 谢谢属性返回的是地图,而不是集合,因此不能以这种方式将它们与Cypher组合 可以使用将两个贴图合并为一个: MATCH (foo:Fo

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

我的查询如下所示:

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

我需要一个解决方案,而不使用其他插件,如APOC


谢谢

属性返回的是地图,而不是集合,因此不能以这种方式将它们与Cypher组合

可以使用将两个贴图合并为一个:

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

至于不使用插件的方法,我知道有两种使用地图投影的方法,但它们都有自己的复杂性

首先,如果知道要获取的所有特性,可以使用贴图投影在特性贴图中显式设置它们:

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

实际上,我只想将属性组合成一个对象,比如javascript中的object.assignobj1、obj2、obj3。我认为APOC不是默认安装的,很遗憾这对我不起作用。是的,APOC.map.merge将把节点和关系的属性映射合并到一个对象中。如果您的匹配在多个对象上匹配,那么您的示例将在所有:Foo节点和每个:Foo节点的所有:Rel关系上匹配,那么最后的collect将为每个:Foo/:Rel对提供一个属性映射集合。至于APOC,安装说明在链接页面上。基本上,您下载jar,将jar放入plugins文件夹,然后重新启动Neo4j。应该很快。我认为目前没有办法做到这一点。可能是在今年晚些时候的Neo4j 3.2中。我用我知道的唯一备选方案编辑了我的答案。希望其中一个对你有用。