couchdb посмотреть / уменьшить. иногда вы можете вернуть значения, иногда вы не можете ..? - PullRequest
1 голос
/ 06 января 2012

Это последняя версия сервера couchbase.

Конечной целью является уменьшение / группирование для объединения значений дубликатов ключей в одну строку со значением массива.

просмотр результата без сокращения / группировки (в действительности может быть получено 50 таких строк):

{
"total_rows": 3,
"offset": 0,
"rows": [
{
"id": "1806a62a75b82aa6071a8a7a95d1741d",
"key": "064b6b4b-8e08-4806-b095-9e59495ac050",
"value": "1806a62a75b82aa6071a8a7a95d1741d"
},
{
"id": "47abb54bf31d39946117f6bfd1b088af",
"key": "064b6b4b-8e08-4806-b095-9e59495ac050",
"value": "47abb54bf31d39946117f6bfd1b088af"
},
{
"id": "ed6a3dd3-27f9-4845-ac21-f8a5767ae90f",
"key": "064b6b4b-8e08-4806-b095-9e59495ac050",
"value": "ed6a3dd3-27f9-4845-ac21-f8a5767ae90f"
}
}

с уменьшением + group_level = 1:

function(keys,values,re){
  return values;
}

выдает ошибку с кушетки с фактическими 50 или около того рядами из реального представления (даже не удается с меньшим количеством строк представления). Куш говорит что-то о том, что данные сокращаются недостаточно быстро. Тем не менее, этот же тип вещей работает просто отлично, когда ключи вида являются целыми числами и имеется небольшой объем данных.

Может кто-нибудь объяснить мне разницу?

Ответы [ 2 ]

2 голосов
/ 06 января 2012

Сокращенные значения должны оставаться как можно меньшими из-за характера их хранения во внутреннем формате данных b-дерева. В wiki есть немного информации о том, почему это так.

Если вы хотите идентифицировать уникальные значения, это необходимо сделать в вашей функции карты. Этот раздел на той же вики-странице показывает вам один метод, который вы можете использовать для этого. (Я уверен, что есть другие)

0 голосов
/ 07 января 2012

Я почти всегда собираюсь запрашивать это представление с помощью параметра "key", поэтому на самом деле нет необходимости собирать значения через кушетку, это можно легко и эффективно сделать в приложении.

...