2014-10-17 2 views
0

Я следующие документы в CouchDB сохраненный:Нужно создать все комбинации отдельно посмотреть в CouchDB

{ 
    "_id":"1", 
    "_rev":"1-e3ff3eb51ccf90e0446ef086fcc6a06c", 
    "sub_name":"A01", 
    "type":"Test", 
    "name":"A", 
    "pos":828288 
}{ 
    "_id":"2", 
    "_rev":"1-e3ff3eb51ccf90e0446ef086fcc6a06c", 
    "sub_name":"A02", 
    "type":"Test", 
    "name":"A", 
    "pos":828288 
}{ 
    "_id":"3", 
    "_rev":"1-ef83655c51f64daa4c074fed9beb8234", 
    "sub_name":"B01", 
    "type":"Test", 
    "name":"B", 
    "pos":171878 
}{ 
    "_id":"4", 
    "_rev":"1-ef83655c51f64daa4c074fed9beb8234", 
    "sub_name":"B02", 
    "type":"Test", 
    "name":"B", 
    "pos":171878 
}{ 
    "_id":"5", 
    "_rev":"1-52b91ba1577a11bf410999ceb2577206", 
    "sub_name":"C01", 
    "type":"Test", 
    "name":"C", 
    "pos":871963 
}{ 
    "_id":"6", 
    "_rev":"1-52b91ba1577a11bf410999ceb2577206", 
    "sub_name":"C02", 
    "type":"Test", 
    "name":"C", 
    "pos":871963 
}{ 
    "_id":"7", 
    "_rev":"1-807f46b501b237a6e0f2ba71ffd7f194", 
    "sub_name":"D01", 
    "type":"Test", 
    "name":"D", 
    "pos":1932523 
}{ 
    "_id":"8", 
    "_rev":"1-807f46b501b237a6e0f2ba71ffd7f194", 
    "sub_name":"D02", 
    "type":"Test", 
    "name":"D", 
    "pos":1932523 
} 

UPDATE Я хотел бы дать пользователю варианты для выбора различных документов через полей выбор на странице, где можно выбрать тип, имя и под_имя. Тем не менее, я не мог найти никаких примеров для динамического запроса e. г, как это:

function(doc, type, name, sub_name) { 
    if (doc.type == type && doc.name == name && doc.sub_name == sub_name) { 
    emit(doc._id, doc.pos); 
    } 
} 

ли я создать для всех doc.type, doc.name и комбинации doc.sub_name отдельно смотреть похожие на те ниже или есть лучший способ сделать это?

function(doc) { 
    if (doc.type == "Test" && doc.name == "A" && doc.sub_name == "A01") { 
    emit(doc._id, doc.pos); 
    } 
} 

function(doc) { 
    if (doc.type == "Test" && doc.name == "A" && doc.sub_name == "A02") { 
    emit(doc._id, doc.pos); 
    } 
} 

function(doc) { 
    if (doc.type == "Test" && doc.name == "B" && doc.sub_name == "B01") { 
    emit(doc._id, doc.pos); 
    } 
} 
... 
+0

Можете ли вы объяснить более подробно, что вы» я пытаюсь сделать и в чем проблема? –

+0

См. Выше раздел обновления. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. – user977828

ответ

2

Вы не можете запросить CouchDB динамически, как вы пытаетесь - взгляды построены по индексу времени (то есть, когда документы создаются или обновляются) и могут быть запрошены только путем передачи ключей или диапазонов ключей , Запросить динамически на основе любого свойства документа невозможно.

Что вы можете сделать, это испускают составной ключ:

function(doc) { 
    emit([doc.type, doc.name, doc.sub_name], doc.pos); 
} 

Вы можете запросить вид, передавая массив в качестве ключа:

/.../my_view?key=["Test","B","B01"] 
Смежные вопросы