单击展开按钮时运行的Neo4j查询是什么?

单击展开按钮时运行的Neo4j查询是什么?,neo4j,cypher,Neo4j,Cypher,按下neo4j浏览器节点上的展开按钮时,neo4j执行的查询是什么 我的问题是,我想获得目标节点旁边的所有节点/关系。但是,我尝试了下面的密码查询 MATCH (x:LABEL {Name: "name"})-[r]-(y) RETURN x, r, y 和基于apoc的查询 MATCH (x:LABEL) WHERE x.Name = "name" CALL apoc.path.subgraphAll(x, {maxLevel:1}) YIELD nodes, relationships R

按下neo4j浏览器节点上的展开按钮时,neo4j执行的查询是什么

我的问题是,我想获得目标节点旁边的所有节点/关系。但是,我尝试了下面的密码查询

MATCH (x:LABEL {Name: "name"})-[r]-(y)
RETURN x, r, y
和基于apoc的查询

MATCH (x:LABEL) WHERE x.Name = "name"
CALL apoc.path.subgraphAll(x, {maxLevel:1}) YIELD nodes, relationships
RETURN nodes, relationships;
这些操作都不如按节点上的展开按钮快。事实上,它的速度要慢一些

Neo4j版本:3.3.1


谢谢大家!

返回节点(和/或relationshisp)的查询结果包括(除其他外)节点的本机ID

当neo4j浏览器展开节点时,该节点的本机
id
用于从此模板生成查询字符串(从中的
getneights
函数复制):

正如您所看到的,这个查询做了很多工作,但是本机ID搜索(在
WHERE
子句中)可以快速获得
a
节点,一旦获得了它的相邻节点(
o
)也可以快速获得

如果启用了
:LABEL(Name)
,您的查询应该能够更快地得到结果

而且,如果您直接使用本机ID(就像浏览器那样),您应该会得到更快的结果(我假设
ID
作为一个变量传递):


非常感谢你。首先找到id,然后展开是至关重要的。我发现查找邻居的查询速度如此之慢的原因是邻居节点超过10k,这与默认的neo4j(100)相比太多了。所以我限制了要查询的邻居的数量。
const query = `MATCH path = (a)--(o)
               WHERE id(a) = ${id}
               AND NOT (id(o) IN[${currentNeighbourIds.join(',')}])
               RETURN path, size((a)--()) as c
               ORDER BY id(o)
               LIMIT ${this.props.maxNeighbours -
                 currentNeighbourIds.length}`
MATCH path = (x)-[r]-(y)
WHERE ID(x) = $id
RETURN x, r, y