我试图找出是否有Cypher查询来执行地图查询功能。给出示例数据。
(stack)
/ | \
/ | \
(item) (item) (item)
/ \ | / \
/ \ | / \
(node) (node) (node) (node)(node)
到目前为止,我用于匹配node
的查询是。
START stack=node({stack})
MATCH (stack)-[:Item]-(item)-[:Representation]-(representation)
RETURN representation
(此representation
中的node
相当于item
我在上图中没有足够的空间来保持书写表示。
现在正如预期的那样,此查询仅返回与所有[ representation, representation, representation.... ]
个节点相关的表示的平面列表。 e.g。
items
我真正想要的是一个查询,以返回representation
的嵌套结构及其相关的[
[ item, representations ],
[ item, representations ],
[ item, representations ]
]
,例如。
return
item
的确切结构并不重要。这样我就可以轻松地将representations
映射到item
,而无需为每个representations
{{1}}发送查询。
这可能看起来像一个微不足道的问题,但在查看Cypher备忘单并观看视频和谷歌搜索Cypher教程之后。我还没有找到关于如何使用Cypher执行此类查询(或实际上大多数查询)的简单解释。
(旁注如果有人也知道" Cypher傻瓜"教程我会非常感激。)
答案 0 :(得分:6)
诀窍是使用aggregation。
RETURN item, collect(representation) as representations
聚合在没有group by
的情况下工作。
如果您在{{1}中使用至少一个聚合函数(count
,collect
,avg
,min
,max
等) }子句,然后将所有非聚合列视为分组键。
在SQL中你会写一些类似的东西:
return
这只是一个重复的声明。