MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie speichere ich die Abfrageausgabe in temp db?

Mongo unterstützt nativ keine „temp“-Sammlungen.

Eine typische Vorgehensweise hier ist, nicht die gesamte Ergebnisausgabe in eine andere DB zu schreiben, da dies völlig sinnlos wäre, da Elasticsearch sein eigenes Caching durchführt, sodass Sie keine Schicht darüber benötigen.

Außerdem ist es aufgrund von IO-Bedenken normalerweise eine schlechte Idee, beispielsweise eine Ergebnismenge von 10.000 Datensätzen in Mongo oder eine andere DB zu schreiben.

Es gibt eine Funktionsanfrage für das, wovon Sie sprechen:https://jira.mongodb.org/ durchsuchen/SERVER-3215 aber noch keine Planung.

Beispiel

Sie könnten eine Ergebnistabelle haben.

Innerhalb dieser Tabelle hätten Sie ein Dokument, das wie folgt aussieht:

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

Jedes Mal, wenn Sie suchen und durch jedes Ergebniselement scrollen, würden Sie eine Zeile in diese Tabelle schreiben und das Schlüsselwortfeld mit Schlüsselwörtern aus diesem Suchergebnis füllen. Dies wäre pro Suchergebnis pro Suchergebnisliste pro Suche. Es wäre wahrscheinlich am besten, jedes Suchergebnis einfach an MongoDB zu streamen, sobald es eintrifft. Ich habe Python nie programmiert (obwohl ich es lernen möchte), also ein Beispiel in 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.
}

Wenn Sie also Ihre Ergebnisse durchgehen, fügen Sie im Grunde so schnell wie möglich Massen ein, um eine Art "Stream" von Eingaben für MongoDB zu erstellen. Das kann es ganz gut.

Dies sollte Ihnen dann eine teilbare Liste von Wörtern und Sprachverben geben, um Dinge wie MRs zu verarbeiten und Dinge, um Statistiken darüber zu sammeln.

Ohne mehr und mehr über Ihr Szenario zu wissen, ist dies so ziemlich meine beste Antwort.

Dies verwendet nicht das Konzept der temporären Tabelle, sondern macht Ihre Daten dauerhaft, was dem Klang nach in Ordnung ist, da Sie Mongo als Speicher-Engine für weitere Aufgaben verwenden möchten.