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

MarkLogic staging中如何用cts查询按条件获取JSON文档字段的唯一值

JavaScript CTS查询取唯一值解决方案

推荐方案(原生支持去重,性能最优)

直接使用MarkLogic内置的cts.values方法,引擎层直接完成过滤、去重、排序逻辑,无需拉取全量文档到内存处理,完全匹配你需要的select distinct(name) from xxx where source='source1'效果:

const filterQuery = cts.jsonPropertyValueQuery("source", "source1");
// 取name属性的唯一值,自动去重
const distinctNames = cts.values(
  cts.jsonPropertyReference("name"), // 指定要取值的JSON字段
  [],
  ["ascending"], // 排序规则,不需要可删除该参数
  filterQuery // 过滤条件
).toArray();

现有写法修复方案

你当前写法逻辑上Set应该可以完成去重,如果出现重复大概率是返回的name值不是纯字符串、存在首尾空格或者不可见字符导致匹配失效,修改如下即可:

const query = cts.jsonPropertyValueQuery("source", "source1");

const distinctNames = [...new Set (
  cts.search(query)
    .toArray()
    .map(doc => String(doc.root.name).trim()) // 统一转字符串并去除首尾空格
    .sort()
)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:45:03