2012-05-16 73 views
1

我使用couchbase服务来存储临时信息。这里是我的问题: 我有许多键值对,但它们通常被分成组(key1_ *; key2_ *; key3_ *)。例如,这一对将如下所示:按名称分组

“key1_1”:“value1”; “key1_2”: “VALUE2”; “key1_3”: “值3”;
“key2_1”:“value4”; “key2_2”: “值5”; “key2_3”: “value6”;
“key3_1”:“value7”; “key3_2”: “value8”; “key3_3”: “value9”;

我需要发送将被用于返回关于值的任何这些基团的可用性的信息的请求:例如:

变种信息= client.Get(“key1_ *”)或类似的东西。密钥名称中是否有过滤器?是否有任何分组选项可以解决我的问题?

回答

1

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

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

其中group与key1_ *等效; 然后创建一个视图与 地图:

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

你已经得到这样的格式的键值对:

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

,那么你可以通过添加过滤由主要结果“?关键=”到请求。或者,如果您使用某些api库,即.net api,则可以从您的代码执行此操作:

Client.GetView<Int64>(Couchbase.Configuration.DevelopmentModeNameTransformer.NamePrefix + "MyViewName", "MyViewName").Key(<desired_key>)