sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan gemmer man forespørgselsoutput i temp db?

Mongo understøtter ikke indbygget "temp"-samlinger.

En typisk ting at gøre her er faktisk ikke at skrive hele resultatoutputtet til en anden DB, da det ville være fuldstændig meningsløst, da Elasticsearch laver sin egen caching, så du behøver ikke noget lag over toppen.

På grund af IO-bekymringer er det også normalt en dårlig idé at skrive et resultatsæt på 10.000 poster til Mongo eller en anden DB.

Der er en funktionsanmodning for det, du taler om:https://jira.mongodb.org/ browse/SERVER-3215 men ingen planlægning endnu.

Eksempel

Du kunne have en tabel med resultater.

I denne tabel vil du have et dokument, der ser sådan ud:

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

Hver gang du søger og ruller gennem hvert resultatelement, vil du skrive en række til denne tabel, der udfylder søgeordsfeltet med nøgleord fra det søgeresultat. Dette ville være pr. søgeresultat pr. søgeresultatliste pr. søgning. Det ville nok være bedst bare at streame hvert søgeresultat til MongoDB, efterhånden som de kommer ind. Jeg har aldrig programmeret Python (selvom jeg gerne vil lære det), så et eksempel i 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.
}

Så efterhånden som du følger dine resultater, masseindsætter du bare så hurtigt som muligt og skaber en slags "stream" af input til MongoDB. Det kan det ganske godt.

Dette skulle så give dig en opdelingsbar liste over ord og sprogverber til at behandle ting som MR'er på og ting for at samle statistik om dem.

Uden at vide mere og mere om dit scenarie er dette stort set mit bedste svar.

Dette bruger ikke temp table-konceptet, men gør i stedet dine data permanente, hvilket er fint ved lyden af ​​det, da du ønsker at bruge Mongo som en storage-motor til yderligere opgaver.



  1. MongoDB $pull syntaks

  2. Zip-arrays med MongoDB

  3. Hvordan angives en ordre eller sortering ved hjælp af C#-driveren til MongoDB?

  4. spring server kan ikke oprette forbindelse til redis ved hjælp af jedis klient