如何使用c#从数据桶中获取所有文档?

如何从数据桶中获取所有文档?

我试过一个样本,但我只能得到一个特定的文件。 这是我的代码:

CouchbaseClient oclient; oclient= new CouchbaseClient("vwspace", "");// data bucket name var results = oclient.Get("205");// document id 

如何获得所有文件?

 var results = oclient.? //what should i use here to get all documents 

使用Couchbase Server 2.0,您将使用视图来获取所有文档。 您的视图将如下所示:

 function (doc, meta) { emit(null, null); } 

此视图将允许您访问所有ID(id始终包含在非简化视图查询结果中)。

有关.NET中的视图和查询视图的更多信息,请参阅http://blog.couchbase.com/strongly-typed-views-net-client-library 。

你无法获得所有文件。 创建一个“常量”primefaces整数值,它将是这样的counter

 CouchbaseClient oclient; oclient= new CouchbaseClient("vwspace", "");// data bucket name ulong results = (ulong)oSourceBucket.Get("MYCOUNTER");// counter (integer incremental value) 

当您将文档添加到存储桶时,请不要使用某些documentId添加它们(我想您可以使用SQL数据库或其他forms)但是使用这样的counter创建它们:

 results = oSourceBucket.Increment("MYCOUNTER", results, 1);// counter (integer incremental value) oSourceBucket.Store(StoreMode.Add, "MYITEM." + results.toString(), myNewObjectToStore); 

现在你可以使用for循环到oSourceBucket.Get(...)所有项目,直到MYCOUNTER值。 我不确定Couchbase 2.0的新版本是否会有模式获取,但目前的稳定版本(我认为1.8.1)只允许精确的密钥获取。

记住这是KEY-VALUE商店,而不是SQL 🙂

Couchbase中还有MultiGet ,但在.NET客户端的最后一个稳定版本中它不存在,但它在引擎盖下使用,就像带有多个Get -s的循环一样。

您需要创建一个发出文档ID(meta.id)的couchbase视图。

或者使用发出每条记录的现有视图。

然后

 http://HOST:8092/YOURBUCKETNAME/_design/YOURDESIGNDOCNAME/_view/YOURVIEWNAME?reduce=false&limit=10 

你会得到如下结果

 {"total_rows":1321085,"rows":[ {"id":"key1","key": ... ,"value": ... }, {"id":"key2","key": ... ,"value": ... }, {"id":"key3","key": ... ,"value": ... }, ... ] } 

“id”字段包含文档密钥。

您需要对结果进行分页。 http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-querying-pagination.html