2014-12-18 4 views
2

В couchDB У меня есть база данных с некоторыми документами. Когда я создаю представление, представление создается внутри этой базы данных вместе с документами. Затем, когда я беру все элементы базы данных, couchDB возвращает мне все элементы, включая представления. Есть ли способ получить все, кроме взглядов?CouchDB: получить все документы в базе данных CouchDB * кроме * проектные документы

ответ

0

Один из способов сделать это - «классифицировать» документы при вставке их в CouchDB. Общей методикой для этого является добавление свойства «type» ко всем документам, которые вы создали.

например.

{ 
    firstName: 'John', 
    lastName: 'Doe', 
    type: 'user' 
} 

Тогда вы можете создать view, который возвращает только документы с этой собственностью.

function(doc) { 
    if (doc.type) { 
    emit(doc._id, doc); 
    } 
} 
+0

Знаете ли вы, как это сделать, не создавая дополнительного вида? – fiso

0

Вы можете использовать

/<mydb>/_all_docs?descending=true&endkey="_design0" 

«0» в _design0 убеждается, что выход останавливается перед первым дизайн документа. Необязательный параметр inclusive_end = false может работать, но не для меня в коротком тесте.

Для получения дополнительной информации см. http://docs.couchdb.org/en/latest/api/database/bulk-api.html.

Но я также предпочел бы простой взгляд на эту задачу.

+1

Я пробовал, но это пропускает документы с ключами больше, чем «_». – fiso

0

Используя это должно работать:

/<mydb>/_all_docs?endkey="_design" 

Если вы используете только идентификаторы автоматически сгенерированные, то вы, вероятно, также можно использовать:

/<mydb>/_all_docs?endkey="_" 

, но это может вызвать проблемы, если вы используете пользовательские идентификаторы поскольку символ «_» находится между прописными и строчными буквами.

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