【问题标题】:How to get all documents from the data bucket using c#?如何使用 c# 从数据桶中获取所有文档?
【发布时间】:2012-10-25 12:18:45
【问题描述】:

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

我尝试了一个示例,但我只能获得一个特定的文档。这是我的代码:

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

【问题讨论】:

标签: c# nosql couchbase


【解决方案1】:

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

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

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

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

【讨论】:

  • 这能让我也访问设计文档吗..?
【解决方案2】:

您无法获取所有文档。创建一个“常量”原子整数值,即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 客户端的最后一个稳定版本中它不存在,但它在底层使用,就像带有多个 Get-s 的 for... 循环一样。

【讨论】:

  • oSourceBucket.Store(StoreMode.Add, "MYITEM." + results.toString(), myNewObjectToStore); myNewObjectToStore 指定了什么?请澄清这一点,因为我是新手..
  • myNewObjectToStore 是您希望存储到 Couchbase 的对象,在这种情况下是您的文档 :)
  • 我有 5 个文档.. 我不需要添加新文档.. 我需要的只是访问这 5 个文档.. 我可以得到所有这 5 个文档.. 可以吗用你的代码来实现..如果可能的话,把代码分享给我..
  • 顺便说一句,Couchbase .NET 客户端库支持 Multiget - 它是 CouchbaseClient.Get(IEnumerable key);
  • @JohnZablocki 是的,但在引擎盖下(在库中)它只是循环中的多个获取。真正的 multiget 是发送到 Couchbase 的单个命令,该命令在客户端库中已实现/未实现。
【解决方案3】:

您需要创建一个可发出文档 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

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 1970-01-01
    • 2021-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多