1

我使用 couchbase 服务来存储临时信息。这是我的问题:我有很多键值对,但是它们通常分为组(key1_ *; key2_ *; key3_ *)。例如,这对看起来像:

"key1_1":"value1"; "key1_2":"value2"; "key1_3":"value3";
“key2_1”:“value4”;"key2_2":"value5"; "key2_3":"value6";
"key3_1":"value7"; "key3_2":"value8"; "key3_3":"value9";

我需要发送一个请求,该请求将用于返回有关任何这些组的值可用性的信息:例如:

var info = client.Get ("key1_ *") 或类似的东西。键名中是否有任何过滤器,或者是否有任何分组选项可以解决我的问题?

4

1 回答 1

1

在 couchbase 2.0 中,您可以使用视图。您可以将 json 对象存储在数据库中,因此 key-val 对应如下所示:

key:<guid>; value: {id:<guid>, group<int>, data<your_values_type>}

其中 group 等效于 key1_*;然后用 Map 创建一个视图:

function (doc) {
  emit(doc.group, [doc.id, doc.group, doc.data]);
}

您已经获得了这种格式的键值对:

key: <int>group ; value: <array>[id,group,data]

然后您可以通过在请求中添加“?key =”来按键过滤结果。或者,如果您使用一些 api 库,即 .net api,您可以从您的代码中执行此操作:

Client.GetView<Int64>(Couchbase.Configuration.DevelopmentModeNameTransformer.NamePrefix + "MyViewName", "MyViewName").Key(<desired_key>)
于 2012-05-16T12:47:40.707 回答