web-dev-qa-db-fra.com

Supprimer des documents de CosmosDB en fonction de conditions via l'explorateur de requêtes

Quelle est la requête ou un autre moyen rapide de supprimer tous les documents correspondant à la condition where d'une collection?
Je veux quelque chose comme DELETE * FROM c WHERE c.DocumentType = 'EULA' mais, apparemment, ça ne marche pas.

Note: Je ne cherche aucune implémentation C # pour cela.

6
JerryGoyal

Je veux quelque chose comme DELETE * FROM c WHERE c.DocumentType = 'EULA' mais, apparemment, ça ne marche pas.

La suppression de documents de cette manière n'est pas prise en charge. Vous devez d'abord sélectionner les documents à l'aide d'une requête SELECT, puis les supprimer séparément. Si vous le souhaitez, vous pouvez écrire le code d'extraction et de suppression dans une procédure stockée, puis exécuter cette procédure stockée.

8
Gaurav Mantri

Ceci est un peu vieux mais avait juste la même exigence et a trouvé un exemple concret de ce que @Gaurav Mantri a écrit.

Le script de procédure stockée est ici:

https://social.msdn.Microsoft.com/Forums/Azure/fr-ec9aa862-0516-47af-badd-dad8a4789dd8/delete-multiple-docdb-documents-within-the-Azure-portal?forum= AzureDocumentDB

Accédez au portail Azure, récupérez le script ci-dessus et créez une nouvelle procédure stockée dans la base de données -> collection à supprimer.

Puis, tout en bas du volet de la procédure stockée, sous la zone de script se trouve un emplacement à insérer dans le paramètre. Dans mon cas, je veux juste supprimer tout ce que j'ai utilisé:

"SELECT c._self FROM c"

Je suppose que le vôtre serait:

"SELECT c._self FROM c WHERE c.DocumentType = 'EULA'"

Puis cliquez sur «Enregistrer et exécuter». Alto, certains documents sont supprimés. Une fois que je l'ai utilisé sur le portail Azure, j'ai basculé sur Azure DocumentDB Studio et obtenu une meilleure vision de ce qui se passait. C'est à dire. Je pouvais voir que j'étais étranglé à supprimer 18 fois (retourné dans les résultats). Pour une raison quelconque, je ne pouvais pas voir cela dans le portail Azure.

Quoi qu'il en soit, très pratique même s’il est limité à un certain nombre de suppressions par exécution. L'exécution du sp est également limitée, vous ne pouvez donc pas écraser le clavier. Je pense que je ne ferais que supprimer et recréer la collection à moins que je n’aie un nombre de documents gérable à supprimer (en pensant <500). 

Des accessoires à Mimi Gentz ​​@Microsoft pour avoir partagé le script dans le lien ci-dessus.

HTH 

5
Ben E G

J'ai écrit un script pour répertorier tous les documents et supprimer tous les documents. Il peut également être modifié pour supprimer les documents sélectionnés.

https://www.lvguowei.me/post/Azure-cosmosdb-clear/

2
user1172274