4

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

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

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
4

3 回答 3

5

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

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

此视图将使您能够访问所有 id(id 始终包含在非缩减视图查询结果中)。

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

于 2012-10-25T14:03:06.793 回答
0

You'll need to create a couchbase view that emits document id ( meta.id ).

Or use existing view that emits every record.

Then

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

You'll get result like the following

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

The "id" field contains document key.

You'll need to paginate over the results. http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-querying-pagination.html

于 2013-02-10T15:32:52.357 回答
0

您无法获取所有文件。创建一个“常量”原子整数值,counter如下所示:

CouchbaseClient oclient;

oclient= new CouchbaseClient("vwspace", "");// data bucket name

ulong results = (ulong)oSourceBucket.Get("MYCOUNTER");// counter (integer incremental value)

当您将文档添加到存储桶时,请不要使用一些 documentId 添加它们(我想您会获得该表单 SQL 数据库或其他东西),而是使用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 客户端的最后一个稳定版本中它不存在,但它在引擎盖下使用,就像带有多个-s的for...循环一样。Get

于 2012-10-25T12:40:49.693 回答