MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Como armazenar a saída da consulta em temp db?


O Mongo não oferece suporte nativo a coleções "temperaturas".

Uma coisa típica a fazer aqui é não escrever toda a saída de resultados para outro banco de dados, pois isso seria totalmente inútil, já que o Elasticsearch faz seu próprio cache, portanto, você não precisa de nenhuma camada por cima.

Além disso, devido a preocupações de IO, normalmente é uma má ideia escrever, digamos, um conjunto de resultados de 10k registros para o Mongo ou outro banco de dados.

Há uma solicitação de recurso para o que você fala:https://jira.mongodb.org/ navegar/SERVER-3215 mas ainda sem planejamento.

Exemplo


Você poderia ter uma tabela de resultados.

Dentro desta tabela você teria um documento que se parece com:
{keywords: ['bok', 'mongodb']}

Cada vez que você pesquisar e rolar por cada item de resultado, você escreverá uma linha nessa tabela preenchendo o campo de palavras-chave com palavras-chave desse resultado de pesquisa. Isso seria por resultado de pesquisa por lista de resultados de pesquisa por pesquisa. Provavelmente seria melhor apenas transmitir cada resultado de pesquisa para o MongoDB à medida que eles chegam. Eu nunca programei Python (embora eu queira aprender), então um exemplo em pseudo:
var elastic_results = [{'elasticresult'}];
foreach(elastic_results as result){
    //split down the phrases in this result and make a keywords array
    db.results_collection.insert(array_formed_from_splitting_down_result); // Lets just lazy insert no need for batch or trying to shrink the amount of data to one go or whatever, lets just stream it in.
}

Então, à medida que você avança em seus resultados, você basicamente insere em massa o mais rápido possível, criando uma espécie de "fluxo" de entrada para o MongoDB. Ele pode fazer isso muito bem.

Isso deve fornecer uma lista fragmentável de palavras e verbos de linguagem para processar coisas como MRs e outras coisas para agregar estatísticas sobre eles.

Sem saber cada vez mais sobre o seu cenário, esta é praticamente minha melhor resposta.

Isso não usa o conceito de tabela temporária, mas torna seus dados permanentes, o que parece bom, pois você deseja usar o Mongo como um mecanismo de armazenamento para outras tarefas.