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

时间:2020-10-15 19:52:12

标签: neo4j cypher

在我的Neo4j数据库中,有许多节点具有相同的nodeID和不同的级别,并且它们通过路径连接。每次尝试查找最大级别小于特定级别n的节点时。我使用以下Cypher查询,该查询从具有nodeID 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)

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

1 个答案:

答案 0 :(得分:0)

假设所有具有相同<html> <head> </head> <body> <div th:replace="fragment :: myFragment"> </div> </body> </html> 的{​​{1}}都位于一个Node节点的NodeID路径中,并且具有相同的type,然后执行以下查询应该在逻辑上等效但要更快:

Current

此查询假定NodeIDMATCH (m:Node) WHERE m.NodeID = $id AND m.Level < $n RETURN m ORDER BY m.Level DESC LIMIT 1 是查询parameters