Чтение всех документов из ведра

Есть ли способ прочитать все документы из ведра? Это активное ведро, и я также хочу получить доступ к вновь созданному документу.
Немногие люди предложили использовать представление для запроса к ведру.
Как я могу создать представление, которое будет обновляться новыми или обновленные документы?
Недавно созданная функция карты представления:

function (doc, meta) {
  emit(doc);
}

Функция сокращения пуста. Когда я запрашиваю такое представление bucket.query(ViewQuery.from("test1", "all")).totalRows(), оно возвращает 0 результатов.


person Himanshu Yadav    schedule 17.11.2015    source источник
comment
Вы тестировали представление в веб-интерфейсе Couchbase? он вернул какие-либо результаты там?   -  person FuzzyAmi    schedule 17.11.2015


Ответы (2)


Из-за проблемы с возвратом нулевых результатов вы повысили представление до рабочего представления? Это распространенная ошибка. Представления разработки рассматривают только небольшое подмножество данных, чтобы не перегружать сервер. Попробуйте это в первую очередь.

Кроме того, никогда не выдавайте весь документ, если можете, особенно если вы просматриваете все документы в корзине. Вы хотите выдать идентификаторы документов, а затем, если вам нужно получить содержимое этих объектов, выполните операцию получения или массовую операцию. Я бы дал вам прямую ссылку на массовые операции, но вы не сказали, какой SDK вы используете, и они специфичны для SDK. Вот один для Java, Например.

При всем этом у меня есть вопросы о том, почему вы делаете эквивалент выбора * из ведра. Что вы планируете делать с этими данными после их получения? Что вы действительно пытаетесь сделать? Конечно, вариантов решения этой проблемы множество.

person Kirk    schedule 17.11.2015
comment
+1 за совет о том, что никогда не следует выпускать полные документы. мотивация такова: отправляя полный документ, вы создаете дубликат данных в индексе. Другими словами, для каждого документа вы создаете другой идентичный документ в индексе. нехорошо. - person FuzzyAmi; 17.11.2015
comment
Еще одна вещь, которую я мог бы порекомендовать, это взглянуть на этот пост в блоге. blog.couchbase.com/2015/october/ - person Kirk; 19.11.2015

Представление — это просто предопределенный запрос к корзине. Новые или измененные документы будут показаны в представлении.

Вы можете проверить результаты своего представления при его создании, нажав кнопку «Показать результаты» в веб-интерфейсе, поэтому, если там отображается 0 документов, неудивительно, что вы получите 0 из SDK.

Если вы используете Couchbase Server 4+ и последнюю версию SDK, вы можете использовать N1QL и создать первичный индекс в своей корзине, а затем выполнить обычную операцию Select * from bucket, чтобы получить все документы.

person OneCricketeer    schedule 17.11.2015
comment
Как я могу получить все документы из корзины без просмотра? - person Himanshu Yadav; 17.11.2015
comment
В своем ответе @cricket_007 вы не путаете кушетки с каучдб? В кушетке вам нужно представление, и вы не должны выдавать документ. Java SDK очень легко позволит вам получить полный документ во время запроса, см. Ответ Кирка. - person Simon Baslé; 18.11.2015
comment
@SimonBaslé - Нет, я думал о Couchbase, я пытался понять это вчера, потому что у меня был код, но на самом деле он использовал представление :\ И только потому, что вы не должны создавать документ, не означает, что вы можете 't :) В качестве альтернативы, N1QL не использует представления - person OneCricketeer; 18.11.2015
comment
n1ql действительно является альтернативой, которую стоит упомянуть и продвигать, если Couchbase Server 4.0 находится на столе. - person Simon Baslé; 18.11.2015