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_Cypher - Fatal编程技术网

Neo4j 嵌套关系的密码查询(类映射查询)

Neo4j 嵌套关系的密码查询(类映射查询),neo4j,cypher,Neo4j,Cypher,我试图找出是否有一个密码查询来执行类似于map的查询函数。给出了示例数据 (stack) / | \ / | \ (item) (item) (item) / \ | / \ / \ | /

我试图找出是否有一个密码查询来执行类似于map的查询函数。给出了示例数据

                        (stack)
                      /    |   \
                     /     |    \
                (item)  (item)  (item)
                 /  \      |       / \
                /    \     |      /   \
           (node) (node) (node) (node)(node)
到目前为止,我对匹配
节点
s的查询是

START stack=node({stack}) 
MATCH (stack)-[:Item]-(item)-[:Representation]-(representation)
RETURN representation
representation
在这个查询中相当于
node
我只是在上面的图中没有足够的空间来继续写表示)

现在,正如预期的那样,此查询只返回与所有
节点相关的表示的平面列表。e、 g

[ representation, representation, representation.... ]
我真正想要的是一个查询,返回
项的嵌套结构及其相关的
表示,例如

[ 
    [ item, representations ],
    [ item, representations ],
    [ item, representations ] 
]
返回的确切结构并不重要。这样我就可以轻松地将
映射到它的
表示
,而无需为每个
s
表示发送查询

这似乎是一个微不足道的问题,但在浏览了Cypher备忘单、观看视频和谷歌搜索Cypher教程之后。我还没有找到一套关于如何使用Cypher执行此类查询(或者实际上是大多数查询)的简单解释

(顺便说一句,如果有人也知道“傻瓜密码”教程,我将不胜感激。)

诀窍在于使用

聚合在不使用
groupby
的情况下工作,如下所示

如果在
return
子句中至少使用一个聚合函数(
count
collect
avg
min
max
等),则所有未聚合的列都被视为分组键

在SQL中,您可以编写如下内容:

SELECT item, collect(representation) as representations
FROM ...
GROUP BY item
这只是一个重复的声明。

诀窍在于使用

聚合在不使用
groupby
的情况下工作,如下所示

如果在
return
子句中至少使用一个聚合函数(
count
collect
avg
min
max
等),则所有未聚合的列都被视为分组键

在SQL中,您可以编写如下内容:

SELECT item, collect(representation) as representations
FROM ...
GROUP BY item

这只是一个重复的声明。

返回项目,表示
,否?@JamesR我不知道,我从来都不理解
的目的,
我想这意味着返回一个简单的
项目列表和一个简单的
表示
。我会试试看:)@JamesR刚刚试过,它确实返回了一个简单的
项目列表
表示
返回项目,表示
,没有?@JamesR我不知道,我从来都不明白
的目的,
我认为这意味着返回一个简单的
项目列表和一个简单的
表示列表。我将尝试:)@JamesR刚刚尝试过,它确实返回了一个简单的
项目列表
表示
。这似乎已经成功了,谢谢。您是否可以描述一下当
返回项时,表示法
返回一个平面列表时,为什么会出现这种情况?理解
collect()
是如何工作的似乎有点违反直觉。不要不欣赏你的答案,因为它显然有效。然而,我认为这对社区是有益的,如果你能在你的回答中提供更多的解释,说明发生了什么以及为什么这会起作用。这似乎已经成功了,谢谢。您是否可以描述一下当
返回项时,表示法
返回一个平面列表时,为什么会出现这种情况?理解
collect()
是如何工作的似乎有点违反直觉。不要不欣赏你的答案,因为它显然有效。然而,我认为如果你能在你的答案中提供更多的解释,说明发生了什么以及为什么会这样,这对社区是有益的。