sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo almacenar el resultado de la consulta en la base de datos temporal?

Mongo no admite de forma nativa colecciones "temporales".

Una cosa típica que se debe hacer aquí es no escribir la salida de resultados completa en otra base de datos, ya que sería completamente inútil, ya que Elasticsearch realiza su propio almacenamiento en caché, por lo que no necesita ninguna capa en la parte superior.

Además, debido a preocupaciones de IO, normalmente es una mala idea escribir, digamos, un conjunto de resultados de 10k registros en Mongo u otra base de datos.

Hay una solicitud de función para lo que hablas:https://jira.mongodb.org/ navegar/SERVIDOR-3215 pero sin planificación hasta el momento.

Ejemplo

Podría tener una tabla de resultados.

Dentro de esta tabla, tendría un documento que se parece a:

{keywords: ['bok', 'mongodb']}

Cada vez que busque y se desplace por cada elemento de resultado, escribirá una fila en esta tabla y completará el campo de palabras clave con palabras clave de ese resultado de búsqueda. Esto sería por resultado de búsqueda por lista de resultados de búsqueda por búsqueda. Probablemente sería mejor simplemente transmitir cada resultado de búsqueda a MongoDB a medida que llegan. Nunca he programado Python (aunque deseo aprender), así que un ejemplo en 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.
}

Entonces, a medida que avanza en sus resultados, básicamente simplemente inserta en masa lo más rápido posible, crea una especie de "flujo" de entrada a MongoDB. Puede hacer esto bastante bien.

Esto debería proporcionarle una lista fragmentable de palabras y verbos lingüísticos para procesar cosas como MR y otras cosas para agregar estadísticas sobre ellos.

Sin saber más y más sobre su escenario, esta es prácticamente mi mejor respuesta.

Esto no utiliza el concepto de tabla temporal, sino que hace que sus datos sean permanentes, lo cual está bien, ya que desea utilizar Mongo como motor de almacenamiento para otras tareas.