sql >> Databáze >  >> NoSQL >> MongoDB

Jak uložit výstup dotazu v temp db?

Mongo nativně nepodporuje „dočasné“ kolekce.

Typická věc, kterou zde musíte udělat, je nezapisovat celý výstup výsledků do jiné DB, protože to by bylo naprosto zbytečné, protože Elasticsearch si dělá vlastní mezipaměť jako takový, nepotřebujete žádnou vrstvu přes vrchol.

Kvůli obavám o IO je také obvykle špatný nápad zapisovat řekněme sadu výsledků 10k záznamů do Mongo nebo jiné DB.

Existuje požadavek na funkci pro to, o čem mluvíte:https://jira.mongodb.org/ procházet/SERVER-3215 ale zatím žádné plánování.

Příklad

Můžete mít tabulku výsledků.

V této tabulce byste měli dokument, který vypadá takto:

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

Pokaždé, když budete hledat a procházet každou položku výsledku, zapíšete do této tabulky řádek, v němž se pole klíčových slov naplní klíčovými slovy z daného výsledku hledání. To by bylo na výsledek vyhledávání na seznam výsledků vyhledávání na vyhledávání. Pravděpodobně by bylo nejlepší streamovat každý výsledek vyhledávání do MongoDB, jakmile přijdou. Nikdy jsem Python neprogramoval (ačkoli se to chci naučit), takže příklad v 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.
}

Takže jak postupujete svými výsledky, v podstatě jen hromadně vkládáte co nejrychleji, abyste vytvořili jakýsi „proud“ vstupu do MongoDB. Umí to docela dobře.

To by vám pak mělo poskytnout skartovatelný seznam slov a jazykových sloves, abyste mohli zpracovat věci, jako je MR on a podobně, a shromáždit o nich statistiky.

Bez toho, abych věděl více a více o vašem scénáři, je to v podstatě moje nejlepší odpověď.

Nepoužívá se koncept dočasné tabulky, ale místo toho jsou vaše data trvalá, což je podle zvuků v pořádku, protože chcete používat Mongo jako úložiště pro další úkoly.



  1. Jak omezit zdroje CPU a RAM pro mongodump?

  2. php_ini není nastaveno na umístění php.ini

  3. Mongoose limit/offset a dotaz na počet

  4. Po meteorickém balíčku node.js POSLOUCHÁ, ale nezobrazuje se na localhost