2015-04-14 5 views
1

Мне нужно создать представление, в котором перечислены значения для атрибута поля doc.CouchDB View - фильтр по атрибуту поля списка (doc.objects. [0] .attribute)

Образец Doc:

{ 
    "_id": "003e5a9742e04ce7a6791aa845405c17", 
    "title", "testdoc", 
    "samples": [ 
     { 
      "confidence": "high", 
      "handle": "joetest" 
     } 
    ] 
} 

Пример использования этого документ, я хочу, вид, который будет возвращать значения «обрабатывать»

Я нашел этот пример с заголовком - Получить содержимое объекта с конкретные атрибуты, например doc.objects. [0] .attribute. Но когда я заполняю имя атрибута, например. «Ручкой» и заменить doc.objects с doc.samples, я не получаю результатов:

Toggle line numbers 
// map 
function(doc) { 
    for (var idx in doc.objects) { 
    emit(doc.objects[idx], attribute) 
    } 
} 

ответ

2

Это создаст массив ключей и значений пар, где ключ непрестанно значение handle. Замените null со значением, которое вы хотите, например. doc.title. Если вы хотите, чтобы документ, прикрепленный к каждой строке, использовал параметр запроса ?include_docs=true, запрашивая представление.

// map 
function (doc) { 
    var samples = doc.samples 
    for(var i = 0, sample; sample = samples[i++];) { 
    emit(sample.handle, null) 
    } 
} 
+0

Ох. Я неправильно прочитал ваш пример doc. Образцы - это массив. Я уточню свой ответ. –

+0

Отлично, спасибо llabball. Могу ли я использовать ключ запуска с этой настройкой или мне нужно будет фильтровать в моем приложении python? –

+0

Список сортируется в виде ключей. Вы можете запросить диапазон с параметрами запроса '? Startkey =" ... "& endkey =" ... "' –

2

Как это ->

function(doc) { 
    for (var i in doc.samples) { 
     emit(doc._id, doc.samples[i].handle) 
    } 
} 

Это даст результат, основанный на doc._id поля в качестве ключа. Или, если вы хотите, чтобы ваш ключ основывался на поле .handle, вы меняете параметры в emit, чтобы вы могли искать по startKey=, endKey=.

+0

^5 Мы закончили с почти таким же ответом :-) –

+0

Спасибо sebster. Я бы согласился, но не могу. Я поддержал и то и другое. –

+0

Хе-хе ... ну, это не похоже на то, что у нас было много способов обойти это. На самом деле подождите, у нас было ... со всеми типами в javascript – sebster

Смежные вопросы