Este guia fornece informações básicas sobre o driver Scala e sua API assíncrona antes de mostrar como usar o driver e o MongoDB noguia de Início Rápido .
Observação
Consulte o Guia de instalação para obter instruções sobre como instalar o driver.
reactive streams
O driver Scala é baseado no driver MongoDB Java Reactive Streams. A API de fluxo reativo consiste nos seguintes componentes:
Observable: uma implementação personalizada de um EditorObserver: uma implementação personalizada de um Assinante
Um Observable é um provedor de um número potencialmente ilimitado de elementos sequenciados, publicados de acordo com a demanda recebida de seu Observer ou múltiplas instâncias de Observer.
Em resposta a uma chamada para Observable.subscribe(Observer), as possíveis sequências de invocação para métodos na classe Observer são fornecidas pelo seguinte protocolo:
onSubscribe onNext* (onError | onComplete)? 
Isso significa que onSubscribe() é sempre sinalizado, seguido por um número possivelmente ilimitado de onNext() sinais, conforme solicitado por Observer. Isso é seguido por um sinal onError() se houver uma falha ou um sinal onComplete() quando não houver mais elementos disponíveis, desde que o Subscription não seja cancelado.
Dica
Para saber mais sobre fluxos reativos, acesse a documentação de fluxos reativos.
Observables
A API do driver Scala espelha a API do driver Java Sync e quaisquer métodos que fazem com que a E/S da rede retorne um tipo Observable<T> , onde T é o tipo de resposta para a operação.
Observação
Todos os tipos de Observable retornados da API são frios, o que significa que nada acontece até que eles sejam inscritos. Portanto, apenas criar um Observable não causará nenhuma E/S de rede. Não é até que você chame o método Subscription.request() que o driver executa a operação.
Os editores nesta implementação são unicast. Cada Subscription para um Observable está relacionado a uma única operação do MongoDB , e o Observable da instância Observer recebe seu próprio conjunto específico de resultados.
Contrapressão
Por padrão, o traço Observer solicitará todos os resultados do Observer assim que o Observable for assinado. Certifique-se de que o Observer possa lidar com todos os resultados do Observable. Implementações personalizadas do método Observer.onSubscribe() podem salvar o Subscription para que os dados sejam solicitados somente quando o Observer tiver a capacidade.
Auxiliares usados no Início rápido
No Início rápido, implementamos ajudantes implícitos personalizados definidos no arquivo Helpers.scala no repositório de origem do driver do Github. Esses ajudantes recuperam e imprimem resultados. Embora o Quick Start seja um cenário artificial para código assíncrono, os exemplos bloqueiam os resultados de um exemplo antes de iniciar o próximo, para garantir o estado do banco de dados. O objeto Helpers fornece os seguintes métodos:
results(): bloqueia até que oObservableseja concluído e retorna os resultados coletadosheadResult(): bloqueia até que o primeiro resultado doObservablepossa ser retornadoprintResults(): bloqueia até que oObservableseja concluído e imprime cada resultadoprintHeadResult(): bloqueia até que o primeiro resultado deObservableesteja disponível e depois o imprime