сопоставить и сократить запросы в couchdb - PullRequest
1 голос
/ 24 марта 2012

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

function(doc) {
emit([doc.type , doc.category, doc.user], doc);

}

Если мы дадим три ключевых значения, таких как

 http://localhost:5984/test/_design/myDesign/_view/myView?key=["Science","A","John"] 

, то эти данные будут отправлены.Но я сомневаюсь, как я могу получить данные, если мы дадим один ключ или два ключа для этого представления.Для вышеприведенного представления это означает, что если пользователь упомянул один ключ, такой как doc.user, то пользовательские данные будут отправляться на основе трех ключей.И еще одно сомнение: можем ли мы дать два значения для одного ключа??Предположим, пользователь хочет получить данные либо с именем пользователя JOHN, либо с Joe, используя то же представление.Пожалуйста, предоставьте руководство для достижения.

Спасибо.

1 Ответ

1 голос
/ 24 марта 2012

Вы можете изменить свое мнение следующим образом:

emit([doc.user, doc.type, doc.category], doc);

, а затем попросите

?startkey=["someName"]&endkey=["someName",{}] 

тогда в списке результатов есть все документы, имеющие doc.user = "someName", независимо от типа и категории

если вам нужна более конкретная информация, вы можете добавить еще один критерий к вашему звонку:

?startkey=["someName","someType"]&endkey=["someName","someType",{}] 

тогда вы получите все документы с someName И someType.

Но вы должны использовать тот же порядок (ключевые поля должны быть заполнены слева направо)

если вам нужен другой порядок (ищите только типы), вам нужно выполнить второй выброс с другим порядком в той же функции (или в другой функции).

Запрос двух ключей одновременно возможен только с данным ключом отверстия. тогда вам нужно вызвать представление py POST с телом

{keys = [["Science", "A", "John"], ["Science", "A", "Joe"]]}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...