Ich verwende eine neue Datenbank von Microsoft namens DocumentDB. Jetzt möchte ich ein Dokument nach ID löschen, aber ich kann nicht herausfinden, wie das geht. Löschen in DocumentDB erfordert Self-Links und sie unterscheiden sich von meinen eigenen IDs. Allerdings suche ich einmal nach einem Dokument, dann bekomme ich den Selbstlink. Mit dieser Selbstverbindung lösche ich das Dokument.
Jetzt möchte ich alle Dokumente rund 50000 Dokumente in meiner Sammlung löschen.
Sie müssen jedes Dokument abrufen und dann löschen oder eine einfache Methode, um dasselbe zu tun?
Kann es möglich sein?
Sie haben Recht, dass das Löschen von Dokumenten einen Verweis auf den _self
-Link des Dokuments erfordert.
Wenn Sie ALLE Dokumente in Ihrer Sammlung löschen möchten, ist es möglicherweise einfacher und schneller, die Sammlung zu löschen und neu zu erstellen. Der einzige Nachteil ist, dass serverseitige Skripts (z. B. Sprocs, UDFs, Trigger) ebenfalls zur Sammlung gehören und möglicherweise ebenfalls neu erstellt werden müssen.
Update: Ich habe eine schnelle Stored Procedure geschrieben, die bei einer Abfrage eine Massenlöschung durchführt. Auf diese Weise können Sie Vorgänge zum Löschen von Daten in weniger Netzwerkanforderungen durchführen.
%Vor%Hier ist eine Lösung zum Löschen von Dokumenten mit dem C # SDK. Der folgende Code geht von einer einzelnen Datenbank und einer einzelnen Sammlung aus. Es iteriert alle Dokumente in der Sammlung und löscht sie einzeln. Um bestimmte Datenbanken, Sammlungen oder Dokumente zu löschen, ändern Sie die entsprechende "CreateQuery" -Methode so, dass sie die SQL-Auswahlsyntax enthält. Um beispielsweise eine bestimmte Datenbank auszuwählen,
db = client.CreateDatabaseQuery().Where(o => o.Id == "MyDocDb").ToList().First();
Beispielcode zum Löschen aller Dokumente in einer DocumentDB-Instanz mit einer einzelnen Datenbank und einer einzelnen Sammlung:
%Vor%Tags und Links c# azure-cosmosdb