Hoje, recebemos uma pergunta interessante no Stack Overflow (https://stackoverflow.com/q/20083932/98509) em relação ao uso correto de startkey_docid. A pergunta foi solicitada quando o usuário estava passando um tecla de início e startkey_docidNo entanto, o startkey_docid pareciam ser ignorados pela visualização. É importante perceber que o principal caso de uso do startkey_docid é permitir que você pagine suas solicitações de exibição (consulte: https://www.couchbase.com/blog/pagination-couchbase) passando em um tecla de início e startkey_docid que corresponde ao último documento da sua última página, o que permite paginar corretamente no caso de vários documentos estarem emitindo a mesma chave. Como o uso correto de startkey_docid está no topo de minha mente, achei que este seria um bom momento para explicar o comportamento para o futuro.
Aqui está uma lista rápida dos aspectos importantes a serem lembrados startkey_docid:
startkey_docidserá totalmente ignorado setecla de inícioé omitido.startkey_docidsó funcionará corretamente se você especificar umtecla de inícioque corresponde exatamente aos documentos que estão indexados na exibição.startkey_dociddeve corresponder exatamente a um dos docids nos resultados que correspondem exatamente ao seutecla de início. Se não houver correspondência, os resultados começarão na chave a seguir.
Dica: se você precisar verificar quantas linhas de correspondência exata serão retornadas para um determinado tecla de inícioTente primeiro executar uma solicitação de exibição com o chave em vez de tecla de início.
P.S. A semântica para chave final e endkey_docid se comportam de forma idêntica a tecla de início e startkey_docid conforme especificado aqui.
Abraços, Brett
Brett, no exemplo do stackoverflow, essas três condições são atendidas e as três primeiras chaves são idênticas. Mesmo usando sua dica profissional, as 3 chaves idênticas estão sendo retornadas. Você poderia responder no stackoverflow como esse caso pode não estar atendendo a um dos três critérios? Parece que sim, mas talvez haja um detalhe que esteja faltando.
Em sua pergunta no StackOverflow, sua startkey não corresponde exatamente a uma entrada da exibição. Nesse caso, startkey_docid será essencialmente ignorado, conforme mencionado no ponto #2 e no final de #3.
Abraços, Brett
Perdi quase um dia com isso. Adicionar isso ao documento seria ótimo para novos usuários do couchbase!
De qualquer forma, muito obrigado!
Fred
[...] Blog da semana: startkey_docid Behavior [...]