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

如何在Couchbase Java SDK 3.4.0中更新文档Meta的Xattr?

如何更新Couchbase文档的Xattr

核心逻辑

Couchbase的Xattr是附加在文档上的独立元数据,更新时无需修改主文档内容,直接针对xattrs字段操作即可。以下是几种常用的实现方式:


命令行(cbc工具)方式

cbc是Couchbase官方提供的命令行客户端,适合快速测试或脚本批量操作:

  • 覆盖式更新Xattr(会替换原有xattrs内容):
cbc upsert 0000c84b-e2bc-43ac-af51-7cf141777f49 -x '{"author": "Amit Sinha", "update_time": "2024-05-20"}' -U couchbase://localhost/你的桶名 -u 用户名 -P 密码
  • 追加式更新Xattr(保留原有xattrs,仅新增/修改指定键):
cbc upsert 0000c84b-e2bc-43ac-af51-7cf141777f49 -x '{"status": "processed"}' --xattr-merge -U couchbase://localhost/你的桶名 -u 用户名 -P 密码

SQL++(cbq shell)方式

通过SQL++语句直接更新,适合批量操作或集成到查询脚本:

UPDATE `你的桶名`
USE KEYS "0000c84b-e2bc-43ac-af51-7cf141777f49"
SET xattrs.`last_editor` = "admin", xattrs.`version` = "v2"
WHERE META().id = "0000c84b-e2bc-43ac-af51-7cf141777f49";

注意:如果Xattr键包含特殊字符,需要用反引号(`)包裹。


Java SDK 方式

适合Java项目中集成操作:

Cluster cluster = Cluster.connect("couchbase://localhost", "用户名", "密码");
Bucket bucket = cluster.bucket("你的桶名");
Collection collection = bucket.defaultCollection();

// 构造要更新的Xattr键值对
Map<String, Object> xattrData = new HashMap<>();
xattrData.put("last_updated", System.currentTimeMillis());
xattrData.put("operator", "dev_team");

// 执行MutateIn操作,仅更新Xattr
collection.mutateIn("0000c84b-e2bc-43ac-af51-7cf141777f49")
    .upsert("xattrs.last_updated", xattrData.get("last_updated"))
    .upsert("xattrs.operator", xattrData.get("operator"))
    .execute();

Python SDK 方式

适合Python项目中集成操作:

from couchbase.cluster import Cluster, ClusterOptions
from couchbase.auth import PasswordAuthenticator
from couchbase.collection import MutateInSpec

# 连接集群
auth = PasswordAuthenticator("用户名", "密码")
cluster = Cluster("couchbase://localhost", ClusterOptions(auth))
bucket = cluster.bucket("你的桶名")
collection = bucket.default_collection()

# 更新指定Xattr字段
collection.mutate_in(
    "0000c84b-e2bc-43ac-af51-7cf141777f49",
    [MutateInSpec.upsert("xattrs.priority", "high")]
)

注意事项

  • 用户自定义Xattr默认存储在用户命名空间下,直接操作xattrs字段即可,无需额外指定命名空间
  • 操作前确保账号拥有目标桶的写入权限
  • 更新Xattr不会修改文档的主内容,也不会改变文档的rev版本号(除非同时修改主文档)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:55:01