C# 如何在Couchbase中提取具有前缀的所有密钥

C# 如何在Couchbase中提取具有前缀的所有密钥,c#,couchbase,C#,Couchbase,我想删除所有带有前缀的文档。例如,所有documentID以name开头的文档都可以说是Identifier1 我找到了一篇使用NodeJS实现这一点的文章。我无法将此代码转换为等效的C代码。在C中,范围表示为开始键和结束键 首先,必须在服务器端创建视图并发布到生产环境: function(doc, meta) { emit(meta.id, null); } 然后在客户端使用带有StartKey和EndKey的ViewQuery对象: var prefix = "pre_"; //t

我想删除所有带有前缀的文档。例如,所有documentID以name开头的文档都可以说是
Identifier1

我找到了一篇使用NodeJS实现这一点的文章。我无法将此代码转换为等效的C代码。

在C中,范围表示为
开始键
结束键

首先,必须在服务器端创建视图并发布到生产环境:

function(doc, meta) {
    emit(meta.id, null);
}
然后在客户端使用带有
StartKey
EndKey
ViewQuery
对象:

var prefix = "pre_"; //this should be a parameter of your method
var query = ViewQuery.From("designDocumentName", "viewName");
query.StartKey(prefix);
query.EndKey(prefix + "\u0000");

然后使用
Bucket
query(ViewQuery)
方法执行查询。

如果您使用的是Couchbase 4.x,那么除了Simon在回答中建议的方法外,还可以使用N1QL通过简单的查询删除文档

首先,如果您以前没有使用过N1QL,请通过运行以下查询一次,确保在bucket上有一个主索引:

CREATE PRIMARY INDEX ON <bucket> USING GSI;
同样,您可以使用命令行工具、查询工作台,或者以编程方式执行此操作,在C#中类似于以下内容:

var result=wait bucket.QueryAsync(“”);
DELETE FROM <bucket> WHERE meta().id LIKE '<prefix>%';
var result = await bucket.QueryAsync("<query>");