所以,我有一个类似于链表的结构。每个节点都有一个prev
字段,用于前一个节点的id
,我使用chain
关系将它们链接在一起。在某些情况下,节点不是此链的一部分,即它的“prev”指向另一个节点,但没有任何指向它...或只有1个节点指向它。
我想对此列表进行“切片”,仅包括直接链接的节点。即,从节点A的点返回到节点B,返回其间的所有节点。
这是我到目前为止所拥有的
match (fb {id: A}) - [:chain] -> (eb {id:B})
return fb
然而,它没有返回结果......我想我需要它以某种方式递归,但我不知道如何表明。我尝试过使用:chain *,但这往往会永远处理。我想我需要一种限制它的方法..
我该怎么做?
答案 0 :(得分:0)
这个怎么样?
MATCH (fb {id: A})-[:chain*1..10]->(eb {id:B})
RETURN fb
这应该将其限制在10个级别。显然,如果你愿意,你可以改变它,但它会影响性能
编辑:刚刚阅读本指南以进行性能调整:
http://neo4j.com/developer/guide-performance-tuning/
引起我注意的一点:
如果您正在使用具有相对较大工作集的查询 (即,将穿越长路,看着很多属性,或者 收集大量结果以便进行排序等) 你需要一个更大的工作堆。如果你有小的查询 您需要非常有限的遍历并返回少量数据 减。假设1-2GB从那里开始和调整