Aprendi recentemente sobre a palavra-chave RETURNING em N1QL. Quando você o adiciona ao final de uma consulta N1QL, essa consulta retornará o conjunto de resultados que foi operado. Por exemplo, se você usar um UPDATE e essa consulta atualizar 10 documentos, o RETURNING retornará esses 10 documentos.
Você pode usar isso em seus aplicativos .NET e .NET Core Couchbase aplicativos.
Configuração básica
Esta postagem do blog pressupõe que você tenha o Couchbase Server configurado localmente, um bucket criado chamado "default" e pelo menos um índice primário criado nesse bucket.
Observação: se estiver tendo problemas para começar a usar o Couchbase Server, ou se estiver recebendo erros, especialmente em relação à indexação N1QL, talvez queira revisitar algumas das minhas postagens do blog "Getting Started" (Introdução): Couchbase com Windows Parte 1 e Couchbase com Windows Parte 2 em particular.
Estou usando um projeto simples de console do .NET Core, com as mesmas ferramentas e configurações que usei no meu projeto Postagem do blog sobre o .NET Core com o Visual Studio Code.
Codificação com .NET e N1QL
A maior parte desse código deve ser bastante familiar se você já tiver usado o .NET e o Couchbase antes. Estou criando 5 documentos que têm (inicialmente) um campo processado definido como falso
. O código abaixo os insere. Ele também os grava no console para fins ilustrativos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
para(var i = 0;i < 5; i++) { var docKey = Guia.NovoGuia().ToString(); var DocContent = novo { foo = "bar", tipo = "exemplo", processado = falso, dt = DateTime.Agora }; var docContentJson = JsonConvert.SerializeObject(DocContent); balde.Inserir(novo Documento { Id = docKey, Conteúdo = DocContent }); Console.WriteLine($"Inserido: {docKey} - {docContentJson}"); } |
Em seguida, esse código executa imediatamente um N1QL ATUALIZAÇÃO
para definir todos os processado
para true. Ele também tem um RETORNO
no final para retornar os documentos e as chaves.
1 2 3 4 5 6 7 8 |
var n1ql = @"UPDATE `default` d SET processed = true WHERE d.type = 'example' E d.processed = false RETURNING d.*, META().id AS docKey"; var consulta = Solicitação de consulta.Criar(n1ql); consulta.Consistência de varredura(Consistência de varredura.RequestPlus); var resultados = balde.Consulta(consulta); |
Por fim, o código a seguir imprime o JSON retornado no console para fins ilustrativos.
1 2 3 4 |
antes de(var resultado em resultados.Fileiras) { var resultJson = JsonConvert.SerializeObject(resultado); Console.WriteLine($"Returned: {resultJson}"); } |
Executar o programa
Para executar esse programa, basta digitar execução do dotnet
na janela do console. Você deverá ver um resultado como este:

Resumo
O RETORNO
A palavra-chave pode economizar uma etapa ao atualizar/inserir um grupo de documentos. Tente fazer experiências com uma palavra-chave ATUALIZAÇÃO
para ver o que acontece. Por exemplo, tente usar ESTÁ FALTANDO
em vez de depender de um sinalizador booleano como "processed".
Se você tiver alguma dúvida, deixe um comentário ou entre em contato comigo no Twitter.