Группировка ключей по имени

Я использую сервис couchbase для хранения временной информации. Вот моя проблема: у меня много пар ключ-значение, но они, тем не менее, условно разделены на группы (key1_ *; key2_ *; key3_ *). Например, пара будет выглядеть так:

«ключ1_1»: «значение1»; «ключ1_2»: «значение2»; "ключ1_3": "значение3";
"ключ2_1": "значение4"; «ключ2_2»: «значение5»; "ключ2_3": "значение6";
"ключ3_1": "значение7"; «ключ3_2»: «значение8»; «ключ3_3»: «значение9»;

Мне нужно отправить запрос, который будет использоваться для возврата информации о доступности значений для любой из этих групп: например:

var info = client.Get ("key1_ *") или что-то в этом роде. Есть ли какой-либо фильтр в названиях ключей или какие-либо варианты группировки, которые могли бы решить мою проблему?


person Andrey Zhminka    schedule 16.05.2012    source источник


Ответы (1)


В couchbase 2.0 вы можете использовать Просмотры. Вы можете хранить объект json в базе данных, поэтому пара ключ-значение должна выглядеть так:

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

Где группа эквивалентна key1_ *; Затем создайте представление с помощью карты:

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>)
person m03geek    schedule 16.05.2012