我有一个数据模型,它是一棵树形结构,最大深度为3。例如:
节点之间的关系为:
我从获取最近的10个(b)节点的查询开始:
然而,
有没有一种方法可以将(c)子查询合并起来,使得
(我知道节点id不是最好的选择,因为它们易变。在这个例子中,我只是使用id()作为一种快速排序方式)
(a) ... first level root node
/ | \
/ | \
(b) (b) (b) ... [0..n] number of second depth nodes
/ | |
/ | |
(c) (c) (c) ... [0..n] number of third depth nodes per (b) node
节点之间的关系为:
(c)-[:in]->(b)-[:in]->(a)
给定一个根节点(a),我想创建一个查询,可以返回最近的10个(b)节点,以及每个(b)节点上最近的3个(c)节点。我从获取最近的10个(b)节点的查询开始:
match (a) where id(a) = {root_id}
match (a)<-[:in]-(b) where b is not null
return b order by id(b) desc limit 10
这个代码可以按照预期获得最近的10个b节点。然而,我找不到一种方法来获取每个(b)里面最近的3个(c)节点。这是我的代码:
match (a) where id(a) = {root_id}
match (a)<-[:in]-(b) where b is not null
with b order by id(b) desc limit 10
optional match (b)<-[:in]-(c)
return b, c order by id(c) desc limit 3;
然而,
limit 3
适用于整个返回结果,而不仅仅是c
子查询。有没有一种方法可以将(c)子查询合并起来,使得
limit 3
对每个(b)节点只应用一次?(我知道节点id不是最好的选择,因为它们易变。在这个例子中,我只是使用id()作为一种快速排序方式)