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

如何使用Clojure在XTDB中删除文档?类查询语法实现需求

在Clojure中用XTDB删除文档的方法

XTDB的删除本质是提交**墓碑事务(tombstone)**标记文档失效,没有直接的SQL式DELETE WHERE语法,但可以通过两种方式实现你要的效果:

1. 已知文档ID直接删除

如果知道待办事项的唯一ID,直接用xt/delete提交事务即可:

;; 提交删除ID为:todo/123的待办事项
(xt/submit-tx your-xtdb-node
  [[:xt/delete :todo/123]])

2. 通过查询筛选后批量删除

如果需要像查询语法那样批量删除符合条件的待办(比如所有已完成的),可以先查询出目标文档的ID,再批量生成删除事务:

;; 步骤1:查询所有已完成的待办ID
(def completed-todo-ids
  (xt/q (xt/db your-xtdb-node)
        '{:find [todo-id]
          :where [[todo-id :todo/status :completed]]}))

;; 步骤2:批量提交删除事务
(xt/submit-tx your-xtdb-node
  (map (fn [[id]] [:xt/delete id]) completed-todo-ids))

补充说明

  • 你看到的时间范围删除是用于清理历史版本数据,和普通删除(标记当前文档失效)不是同一个场景。
  • 提交删除事务后,后续查询就不会再返回被标记的文档,但历史版本数据仍可通过指定时间戳查询(除非你清理了历史)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:31:13