Couchbase:如何使用文档 ID 模式删除多个文档

Couchbase : How to Delete Multiple Documents By Using Document ID pattern

我是 Couchbase 数据库的新手。

我已经用 10,000 个文档填充了一个存储桶,我想通过使用 N1Ql 删除查询使用文档 ID 模式删除这些文档。例如,密钥类似于 :ao.sl3:eid:89049032000001000000000016677381。所以我想使用一个模式,比如 ':ao.sl3:eid%' 来删除所有文件。

在 Couchbase Web UI 上,我的文档如下图所示 -

我想使用 CouchBase web UI 查询编辑器来删除文档。

谢谢

你需要 primary index to do this, but you can simply use the LIKE operator:

DELETE
FROM mybucketname
WHERE META().id LIKE ':ao.sl3:eid%'

一些注意事项:

  • 在生产中使用主索引是一件非常危险的事情。如果这是一次性的事情,请确保在 DELETE 具有 运行.
  • 之后删除该主索引
  • 如果这是您将在生产中定期执行的操作,您可能需要考虑另一种方法。根据您的用例,您可能想要查看 TTL、N1QL 分页、事件或可以使用更高效索引的备用数据模型。

已经有几年了,但我只是在跟进任何未解决的问题,因为 Matthew Groves 表示您可以使用 Couchbase Eventing 服务。

做你想做的事情的功能非常简单,只有 4 行(如果算上评论,则为 8 行)。

// example the keys are like :ao.sl3:eid:89049032000001000000000016677381
// delete any key starting with a pattern like ":ao.sl3:eid:"
// make a binding of a bucket alias called src_bkt in read+write mode 
// then deploy with a Feed Boundary of Everything.
function OnUpdate(doc, meta) {
    if (!meta.id.startsWith(':ao.sl3:eid:')) return;
    delete src_bkt[meta.id];
}

有关 Couchbase Eventing 的更多信息,请参阅 eventing-overview and eventing-examples