如我们私下讨论的
这个不能下推是逻辑上,无论从 A 还是 B tag 开始扫,都不敢断言 sample limit 部分数据能保证拓展之后总量能达到 10 的数量,所以只能全扫描,所以这里不下推并不是没实现,而是做不到。
然而,如果我们使用者知道图数据库自己不知道的信息,比如”对于 limit 10 的查询,A如果扫100个肯定能保证了“,我们就可以选择从 A limit 100 然后再拓展出去一跳,看对端是不是 B,如果是 B 则返回总量 limit 10。
那么如何让数据库从 A 开始扫 100 个再拓展呢?要么是写 multi MATCH ,要么是利用非 cypher 的 nGQL
对于非 cypher 的 ngql 就是:
lookup on A yield id(vertex) as vid | limit 100 | GO FROM $-.vid OVER * bidirectly …
具体参考文档。