2015-06-01 3 views
5

в Couchbase DB, возможно ли получить несколько документов с использованием префикса ключей в качестве строки запроса, и он возвращает все ключевые значения, которые имеют ключ, начинающийся с предоставленного префикса ключа (например, операторский вид вещь)? без использования представлений или запросов/индексов.Couchbase - извлечение нескольких документов с использованием префикса ключей

Я проектирование мои ключи так, как это показано на слайде 51 презентации http://www.slideshare.net/Couchbase/couchbase-103-data-modeling

+1

Есть ли причина, по которой вы не хотите использовать представление для этого? Имейте в виду, что вы можете иметь представление или запрос, только сообщать вам фактические идентификаторы, которые вам нужны для извлечения, а затем вы получите их, используя обычные API KV. –

ответ

10

Если вы не хотите использовать представление или n1ql запрос, нет никакого способа, чтобы получить документы, не зная их точные ключи. То есть вы можете получить только ключи на основе префикса, если у вас есть способ заранее создать возможные ключи на стороне клиента, например. User-1, User-2 ... User-n.

Вы можете, тем не менее, выполнить запрос о префиксе, о котором вы говорите в n1ql, без создания каких-либо дополнительных индексов, потому что с n1ql у вас уже будет основной индекс для всех ключей документа. Итак, вы можете сделать что-то вроде "SELECT META(myBucket).id FROM myBucket WHERE META(myBucket).id LIKE "prefix%";

+0

. Я в порядке с одним дополнительным N1QL! Это очень полезный трюк :) Спасибо. Я думаю, что я предпочел бы использовать один дополнительный N1QL вместо того, чтобы поддерживать ссылочный массив дочерних документов в родительском пользователе: id {} object, который требует обновления каждой вставки/удаления дочернего элемента. что вы думаете? –

+1

Это зависит от ваших требований к производительности. Использование ссылочного документа для получения идентификаторов дочерних документов сделает поиск быстрее. Тем не менее, сохранение того, что по сути является ручным индексом, будет намного более полезным для развития. Я бы сказал, если производительность достаточно хорошая, используйте простейший подход, т. Е. N1ql в этом случае. –

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