Hoje, recebemos uma pergunta interessante no Stack Overflow (http://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_docid
será totalmente ignorado setecla de início
é omitido.startkey_docid
só funcionará corretamente se você especificar umtecla de início
que corresponde exatamente aos documentos que estão indexados na exibição.startkey_docid
deve 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ício
Tente 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 [...]