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

给定起始ID,如何编写Couchbase N1QL查询获取链表结构所有文档?

用N1QL查询Couchbase中的链表全量文档

你的Couchbase集合中文档采用链表结构,每个文档通过nextCollection(下一个文档ID)和prevCollection(上一个文档ID)字段关联。要从起始IDdoc01出发获取整个链表的所有文档并返回为数组,可以使用N1QL的递归查询语法WITH RECURSIVE实现,具体语句如下:

WITH RECURSIVE linked_docs AS (
    -- 初始步骤:获取起始文档
    SELECT *
    FROM `your-collection-name`
    WHERE id = "doc01"
    UNION ALL
    -- 递归步骤:根据当前文档的nextCollection获取下一个文档,直到nextCollection为null
    SELECT d.*
    FROM linked_docs ld
    JOIN `your-collection-name` d ON ld.nextCollection = d.id
    WHERE ld.nextCollection IS NOT NULL
)
-- 将所有递归结果聚合为一个数组
SELECT ARRAY_AGG(ld) AS linked_docs_array
FROM linked_docs ld;

语句说明:

  • WITH RECURSIVE:开启递归查询,定义递归公共表表达式(CTE)linked_docs
  • 初始查询部分:先取出ID为doc01的起始文档,作为递归的起点
  • 递归查询部分:通过JOIN关联当前文档nextCollection字段对应的下一个文档,直到nextCollection为null时终止递归
  • ARRAY_AGG():将所有查询到的文档聚合为一个数组,返回格式匹配需求

注意:请将语句中的your-collection-name替换为你实际使用的集合名称。

内容的提问来源于stack exchange,提问作者Abdalla Essam Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 22:35:15