2016-10-31 4 views
2

新しいドキュメントを挿入する前に、documentdbコレクションをクリアする方法を知る必要があります。私は、オンデマンドのSQL Serverからデータを取得してdocumentdbコレクションに挿入するために、datafactoryパイプライン処理を使用しています。頻度は2時間ごとに設定されています。したがって、次のサイクルが実行されるとき、私はまずdocumentdbコレクション内の既存のデータをクリアします。それ、どうやったら出来るの?ドキュメントを挿入する前にDocumentDBコレクションをクリアする

答えて

2

最も簡単な方法は、プログラムでコレクションを削除し、同じ名前で再作成する方法です。私たちのテストスクリプトはこれを自動的に行います。微妙な競合状態でこれが失敗する可能性がありますが、削除と再作成の間に0.5秒の遅延を追加すると、これが回避されることがわかりました。

また、すべてのドキュメントIDを取得し、一度に1つずつ削除することもできます。これはストアドプロシージャ(sproc)から最も効率的に実行されるので、ワイヤ全体に送信する必要はありませんでしたが、それでもRUを消費して時間がかかります。

+0

ストアドプロシージャのやり方はどうですか? – ZeroOne

+0

[Here](https://github.com/lmaccherone/documentdb-utils/blob/master/sprocs/deleteSomeDocuments.coffee)は、私が書いたsprocで、フィルタ式を渡すことができます。それらの文書documentdb-utilsを使用している場合、終了するまで自動的にsprocを呼び出し続けます。 sprocだけを使用している場合は、継続トークンが返ってこないうちに自分自身で呼び出してください。 CoffeeScriptが分からない場合は、[here](http://coffeescript.org/#try)に貼り付けて貼り付けてください。JavaScriptがコンパイルされます。 –

+0

訂正、その特定のsprocは継続トークンを処理しませんが、そのフォルダ内の他のsprocsの例として簡単に追加できます。 –

関連する問題