Mongoは、「一時的な」コレクションをネイティブにサポートしていません。
ここで行う一般的な方法は、結果出力全体を別のDBに実際に書き込まないことです。これは、Elasticsearchが独自のキャッシュを実行するため、上にレイヤーを配置する必要がないため、まったく意味がないためです。
同様に、IOの懸念があるため、通常、Mongoまたは別のDBに10,000レコードの結果セットを書き込むことはお勧めできません。
あなたが話していることについての機能リクエストがあります: https://jira.mongodb.org/参照/SERVER-3215 しかし、現時点では計画はありません。
例
結果の表を作成できます。
このテーブル内には、次のようなドキュメントがあります。
{keywords: ['bok', 'mongodb']}
各結果アイテムを検索してスクロールするたびに、このテーブルに行を書き込み、キーワードフィールドにその検索結果のキーワードを入力します。これは、検索ごとの検索結果リストごとの検索結果ごとになります。各検索結果が入ってくるときにMongoDBにストリーミングするのがおそらく最善でしょう。私はPythonをプログラミングしたことがないので(学びたいのですが)、疑似の例:
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.
}
したがって、結果に沿って進むと、基本的には、MongoDBへの入力の一種の「ストリーム」をできるだけ速く大量に挿入するだけです。これは非常にうまくできます。
これにより、MRのようなものを処理するための単語や言語動詞のシャーディング可能なリストが得られ、それらに関する統計を集約することができます。
あなたのシナリオについてますます知らなくても、これはほとんど私の最善の答えです。
これは一時テーブルの概念を使用しませんが、代わりにデータを永続的にします。これは、Mongoを以降のタスクのストレージエンジンとして使用するため、そのサウンドで問題ありません。