Nosql 使用N1QL从Couchbase中删除所有包含空内容的文档

Nosql 使用N1QL从Couchbase中删除所有包含空内容的文档,nosql,couchbase,Nosql,Couchbase,我在couchbase服务器上执行了一个有点错误的查询,这是执行的查询: INSERT INTO `Writer_DB` (KEY _k, VALUE _v) SELECT META().id _k, _v from `Sam_DB` v 我使用了v而不是_v,因此执行了该操作,但结果是我有Id,但没有文档的内容,因此当我通过Id搜索文档时,显示的内容为空 我再次运行了查询,但它检索到了一个错误,因为Id重复,所以最好删除所有内容为空的文档或按Id“填充”文档内容。问题是,我是couchbas

我在couchbase服务器上执行了一个有点错误的查询,这是执行的查询:

INSERT INTO `Writer_DB` (KEY _k, VALUE _v)
SELECT META().id _k, _v
from `Sam_DB` v
我使用了v而不是_v,因此执行了该操作,但结果是我有Id,但没有文档的内容,因此当我通过Id搜索文档时,显示的内容为空

我再次运行了查询,但它检索到了一个错误,因为Id重复,所以最好删除所有内容为空的文档或按Id“填充”文档内容。问题是,我是couchbase和NoSql的新手

DELETE FROM `Writer_DB` AS d WHERE d IS NULL;
上述查询需要主索引,为了加快查询速度,可以使用以下索引:

create index ix1 on default(self) WHERE self IS NULL;
DELETE FROM `Writer_DB` AS d WHERE d IS NULL;
更新文件

UPDATE `Writer_DB` SET id = META().id WHERE d IS NULL;


没有快速的方法可以做到这一点。如果您知道每个文档中都应该存在一个键,那么可以使用mango find查询获取该键为空的所有文档,然后删除这些文档。否则,您可能需要获取每个文档,然后在应用程序中查看它是否有
\u id
以外的任何键。至于“填充”文档,只需像往常一样使用PUT替换它即可。
DELETE FROM `Write_DB` USE KEYS (SELECT RAW META().id from `Sam_DB`);