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

CockroachDB中是否有MongoDB $addToSet的等效操作符?

CockroachDB 实现类似 MongoDB $addToSet 的功能

CockroachDB 没有内置的类似 MongoDB $addToSet 的操作符,但可以通过组合内置函数来实现「仅当目标值不存在时追加到数组」的需求,以下是两种常见场景的实现方式:

针对原生数组类型(如 string[]、int[])

假设你有一张表 test_table,包含 id 和 tags(string[] 类型)字段,要给 id=1 的记录追加标签 "new_tag",且仅当标签不存在时执行:

UPDATE test_table
SET tags = array_append(tags, 'new_tag')
WHERE id = 1
AND array_position(tags, 'new_tag') IS NULL;
  • array_position(tags, 'new_tag') IS NULL 用于判断目标值是否不在数组内
  • 只有满足判断条件时,才会执行 array_append 完成追加操作

针对 JSONB 数组类型

如果你的数组是 JSONB 格式(如 jsonb 类型的数组),可以用 JSONB 专属操作符实现:

UPDATE test_table
SET tags = tags || '["new_tag"]'::jsonb
WHERE id = 1
AND NOT tags @> '["new_tag"]'::jsonb;
  • @> 是 JSONB 的包含操作符,NOT tags @> '["new_tag"]'::jsonb 表示数组不包含目标值
  • || 用于拼接 JSONB 元素,实现追加效果

这两种写法都能达到和 MongoDB $addToSet 一致的效果,避免数组中出现重复值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 16:05:28