Neo4j 获取 属性 小于特定值的最大节点

Neo4j get the biggest node whose property is smaller than a specific value

在我的Neo4j数据库中,有很多nodeID相同但级别不同的节点,它们通过一条路径相连。每次我试图找到具有小于特定级别 n 的最大级别的节点。我使用以下 Cypher 查询,它从节点 ID id.

的最新节点开始搜索
MATCH (:Node{NodeID:id,Current:'true'})-[:type*0..]->(m:Node{NodeID:id}) 
WHERE m.Level < n
RETURN m
ORDER BY m.Level DESC
LIMIT 1

我为这个数据库创建的索引如下:

CREATE INDEX Nodes FOR(n:Node) ON (n.NodeID, n.Level)

但是,它有点慢,尤其是当路径很长时,我需要重复这个过程数千次。所以我的问题是,有没有更好的实现方式,我是否需要修改索引以提高性能?预先感谢您的帮助!

假设所有具有相同 NodeIDNode 都在以具有相同 NodeIDCurrent 节点为根的 type 路径中,那么以下查询在逻辑上应该是等效的但速度更快:

MATCH (m:Node)
WHERE m.NodeID = $id AND m.Level < $n
RETURN m
ORDER BY m.Level DESC
LIMIT 1

此查询假定 idn 是查询 parameters