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)
但是,它有点慢,尤其是当路径很长时,我需要重复这个过程数千次。所以我的问题是,有没有更好的实现方式,我是否需要修改索引以提高性能?预先感谢您的帮助!
假设所有具有相同 NodeID
的 Node
都在以具有相同 NodeID
的 Current
节点为根的 type
路径中,那么以下查询在逻辑上应该是等效的但速度更快:
MATCH (m:Node)
WHERE m.NodeID = $id AND m.Level < $n
RETURN m
ORDER BY m.Level DESC
LIMIT 1
此查询假定 id
和 n
是查询 parameters。
在我的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)
但是,它有点慢,尤其是当路径很长时,我需要重复这个过程数千次。所以我的问题是,有没有更好的实现方式,我是否需要修改索引以提高性能?预先感谢您的帮助!
假设所有具有相同 NodeID
的 Node
都在以具有相同 NodeID
的 Current
节点为根的 type
路径中,那么以下查询在逻辑上应该是等效的但速度更快:
MATCH (m:Node)
WHERE m.NodeID = $id AND m.Level < $n
RETURN m
ORDER BY m.Level DESC
LIMIT 1
此查询假定 id
和 n
是查询 parameters。