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



当按下 neo4j 浏览器节点上的展开按钮时,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

谢谢!

返回节点(和/或关系hisp(的查询结果包括(除其他外(节点的本机ID。

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

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}`

如您所见,此查询正在做大量工作,但是本机 ID 搜索(在WHERE子句中(可以快速获取a节点,一旦获得该节点,其相邻节点(o(也可以快速获取。

如果您在:LABEL(Name)上有索引,您的查询应该能够更快地获得结果。

而且,如果您直接使用本机 ID(就像浏览器一样(,您应该获得更快的结果(我假设id作为参数传递(:

MATCH path = (x)-[r]-(y)
WHERE ID(x) = $id
RETURN x, r, y

最新更新