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

时间:2019-10-22 13:07:50

标签: couchbase n1ql

我是Couchbase数据库的新手。

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

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

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

谢谢

2 个答案:

答案 0 :(得分:2)

您将需要primary index来执行此操作,但是您可以简单地use the LIKE operator

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

有些事情要记住:

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

答案 1 :(得分:0)

已经有几年了,但我只是在跟进任何未解决的问题,因为 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-overvieweventing-examples