我想删除所有带前缀的文档。例如,所有带有以name开头的documentIds的文档都可以说Identifier1
。
我发现使用NodeJS执行此操作的this文章。我无法将此代码转换为等效的C#代码。
答案 0 :(得分:2)
如果您正在使用Couchbase 4.x,那么除了Simon在答案中建议的内容之外,您还可以使用N1QL通过简单查询删除文档。
首先,如果您之前没有使用过N1QL,请确保通过运行以下查询一次在存储桶上有一个主索引:
CREATE PRIMARY INDEX ON <bucket> USING GSI;
您可以使用命令行查询工具(位于/opt/couchbase/bin/cbq
),或者,如果使用Couchbase 4.5+,则使用UI中的Query Workbench。
然后,要通过ID前缀删除所有文档,请使用以下命令:
DELETE FROM <bucket> WHERE meta().id LIKE '<prefix>%';
同样,您可以使用命令行工具,Query Workbench,或以编程方式执行此操作,它在C#中看起来类似于以下内容:
var result = await bucket.QueryAsync("<query>");
答案 1 :(得分:1)
在C#中,范围表示为StartKey
和EndKey
。
服务器端的第一个 必须创建视图并将其发布到生产:
function(doc, meta) {
emit(meta.id, null);
}
然后在客户端使用ViewQuery
对象与StartKey
和EndKey
:
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)
方法执行查询。