Couchbase: чтение всех документов из ведра
Есть ли способ прочитать все документы из ведра? Это активная корзина, и я хочу получить доступ к вновь созданному документу.
Мало кто предлагал использовать для просмотра запросы к ведру.
Как я могу создать представление, которое будет обновляться новыми или обновленными документами?
Функция карты вновь созданного вида:
function (doc, meta) {
emit(doc);
}
Функция уменьшения пуста. Когда я запрашиваю представление, как это bucket.query(ViewQuery.from("test1", "all")).totalRows()
возвращает 0 результатов назад.
2 ответа
Для возврата вопроса с нулевым результатом вы продвинули представление в производственное представление? Это распространенная ошибка. Представления разработки рассматривают только небольшое подмножество данных, чтобы не перегружать сервер. Попробуйте это в первую очередь.
Кроме того, никогда не испускайте весь документ, если вы можете помочь ему, особенно если вы просматриваете все документы в ведре. Вы хотите выдать идентификаторы документов, а затем, если вам нужно получить содержимое этих объектов, выполните операцию get или массовую операцию. Я бы дал вам прямую ссылку для массовых операций, но вы еще не сказали, какой SDK вы используете, и это зависит от SDK. Вот пример для Java, например.
Несмотря на это, у меня есть вопросы о том, почему вы делаете эквивалент select * from bucket. Что вы планируете делать с этими данными после их получения? Что ты на самом деле пытаешься сделать? Есть много вариантов, как решить это, конечно.
Представление - это просто предопределенный запрос по сегменту. Новые или измененные документы будут показаны в представлении.
Вы можете проверить результаты своего просмотра, когда создаете его, нажав кнопку Показать результаты в веб-интерфейсе, поэтому, если там отображается 0 документов, неудивительно, что вы получили 0 из SDK.
Если вы работаете с Couchbase Server 4+ и последним SDK, вы можете использовать N1QL и создать первичный индекс в своем сегменте, а затем сделать обычный Select * from bucket
получить все документы.