如何用N1QL仅复制Couchbase源桶的键到新桶并设空值?
正确的N1QL查询语句:仅复制键到新桶
你可以通过在SELECT子句中明确指定VALUE为NULL(或空对象{}),实现仅复制源桶的键到新桶,正确的查询语句如下:
INSERT INTO `new-bucket` (KEY k, VALUE v) SELECT META(v).id AS k, NULL AS v FROM `source-bucket` AS v;
说明:
- 你之前尝试的
VALUES子句结合子查询的写法不符合N1QL语法,VALUES仅适用于插入固定的单行/多行值,无法直接嵌套子查询批量获取数据。 - 上述语句会遍历
source-bucket中的所有文档,提取每个文档的ID作为新桶的键,同时将值设为NULL。如果需要值为空对象而非NULL,可以把NULL AS v替换为{} AS v。 - 执行完成后,你可以通过
USE KEYS语句快速校验ID是否存在,例如:
只要返回结果非空,就说明该ID对应的键存在。SELECT 1 FROM `new-bucket` USE KEYS ["target-id"];
内容的提问来源于stack exchange,提问作者GrimThor3
相关产品推荐
相关产品推荐

