如何使用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