2017-06-27 13 views
2

文書内のすべての文書を削除するためのクエリやその他の素早い方法は、コレクション内の条件と一致していますか?
DELETE * FROM c WHERE c.DocumentType = 'EULA'のようなものが欲しいですが、明らかに動作しません。クエスチョンエクスプローラによる条件に基づいてCosmosDBから文書を削除

注:私はこのためのC#の実装を探していません。

+0

Gaurav Mantriは、現在サポートされていません。レビュー中の[フィードバック](https://feedback.azure.com/forums/263030-documentdb/suggestions/6346033-set-based-operations-insert-update-delete)があります。 –

+0

興味深いことに、グラフAPIを使用すると、選択したすべてのドキュメントを削除するためにトラバーサルの結果に '.drop()'を実行できるようになります。 –

+0

@JesseCarterは少し詳しく説明できます – JerryGoyal

答えて

7

私は、WHERE c.DocumentTypeは= 'EULA' しかし、どうやら、それは動作しませんCからのDELETEのようなもの*をしたいです。

このようにドキュメントを削除することはサポートされていません。最初にSELECTクエリを使用してドキュメントを選択し、次にそれらを個別に削除する必要があります。必要に応じて、ストアドプロシージャでの削除&のフェッチコードを記述し、そのストアドプロシージャを実行することができます。

0

これはちょっと古いですが、同じ要件があり、@ Gaurav Mantriが書いた具体的な例が見つかりました。

ストアドプロシージャスクリプトはここにある:Azureのポータルへ

https://social.msdn.microsoft.com/Forums/azure/en-US/ec9aa862-0516-47af-badd-dad8a4789dd8/delete-multiple-docdb-documents-within-the-azure-portal?forum=AzureDocumentDB

移動、上からスクリプトを取得し、あなたから削除する必要があるデータベース - >コレクション内の新しいストアドプロシージャを作成します。

次に、ストアドプロシージャペインの下部で、スクリプトのテキストエリアの下に、パラメータを挿入する場所があります。私の場合、私はちょうど私が使用したすべてを削除する:

を「Cからのc._selfを選択」私はあなたのようになり推測:

「c.DocumentType WHERE Cからのc._selfを選択します= 'EULA' "

[保存して実行]をクリックします。ヴィオラ、いくつかの文書が削除されます。私がAzure Portalで作業した後、私はAzure DocumentDB Studioを切り替えて、何が起きているのかをよりよく把握しました。私。私は18時間(結果に返された)を削除するように絞られているのがわかりました。何らかの理由で私はAzure Portalでこれを見ることができませんでした。

とにかく、実行ごとに一定量の削除に制限されていてもかなり便利です。 spを実行することも抑制されるので、キーボードをマッシュアップすることはできません。管理しやすい数の文書を削除しないと(コレクション< 500)、私はコレクションを削除して再作成すると思います。

上記のリンクでスクリプトを共有するためのMimi Gentz @Microsoftへの小道具。

HTH

関連する問題