You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XTDB的Pull API中实现无界递归Pull查询?

问题成因
  • XTDB 独立的xt/pull API 原生未实现对EQL无界递归标识...的语义解析,该语法仅在xt/q查询内部嵌套的pull表达式中被查询引擎做了特殊适配
  • 你遇到的报错本质是独立pull接口无法识别...作为递归配置的合法值,仅支持显式指定递归深度的数字值
解决方案

方案1:显式指定递归深度(适配独立Pull API)

你可以根据业务数据的最大递归层级,把...替换为对应数字,独立Pull API支持数字格式的递归深度配置。比如你的示例中递归层级最多为8层,写成如下形式即可正常调用:

;; 最多递归10层,足够覆盖绝大多数场景
(xt/pull (xt/db node) [* {:composite/contains 10}] 6)

方案2:封装Query API实现无界递归的Pull调用

如果你需要保持无界递归的写法,不需要手动指定深度,可以封装一个工具函数复用Query API的pull能力,性能损耗可以忽略:

(defn pull-unbounded [db pull-pattern eid]
  (ffirst (xt/q db
                '{:find [(pull ?eid pattern)]
                  :in [?eid pattern]}
                eid pull-pattern)))

;; 调用方式和原生pull完全一致,支持无界递归
(pull-unbounded (xt/db node) [* {:composite/contains ...}] 6)

内容的提问来源于stack exchange,提问作者Aram Zadikian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:36:03