Bulk Delete Cosmosdb
Para borrar documentos de cosmosdb existen varias formas de hacerlo se puede hacer con el SDK, etc. buscando en los documentos de Microsoft y cosmosdb encontré una forma muy fácil y simple para poder borrar documentos.
Lo primero
que tenemos que hacer es crear un StoreProcedure en la collection donde
deseamos borrar los documentos.
Damos clic
a la colección de datos y luego nos vamos al botón que dice New Store Procedure
de esta manera podemos iniciar a agregar el código que se ocupa para borrar los
documentos.
Le damos el
nombre que deseamos al SP.
Ahora viene
la interesante el SP de javascript que vamos a usar para hacer el borrado de
documentos no lo escribí yo. Este lo encontré en este documento que además tiene ejemplos
para otro tipo de procedimientos almacenados.
function bulkDelete(query) {
var collection = getContext().getCollection();
var collectionLink = collection.getSelfLink();
var response = getContext().getResponse();
var responseBody = {
deleted: 0,
continuation: true
};
if (!query) throw new Error("The query is undefined or null.");
tryQueryAndDelete();
function tryQueryAndDelete(continuation) {
var requestOptions = {continuation: continuation};
var isAccepted = collection.queryDocuments(collectionLink, query, requestOptions, function (err, retrievedDocs, responseOptions) {
if (err) throw err;
if (retrievedDocs.length > 0) {
tryDelete(retrievedDocs);
} else if (responseOptions.continuation) {
tryQueryAndDelete(responseOptions.continuation);
} else {
responseBody.continuation = false;
response.setBody(responseBody);
}
});
if (!isAccepted) {
response.setBody(responseBody);
}
}
function tryDelete(documents) {
if (documents.length > 0) {
var isAccepted = collection.deleteDocument(documents[0]._self, {}, function (err, responseOptions) {
if (err) throw err;
responseBody.deleted++;
documents.shift();
tryDelete(documents);
});
if (!isAccepted) {
response.setBody(responseBody);
}
} else {
tryQueryAndDelete();
}
}
}
Yo lo probé
y funciona muy bien. Lo interesante es que solamente le tenemos que pasar un script
tipo SQL para borrar los documentos que necesitamos. Y bueno se pueden hacer
todos los cambios que necesite para que se ajuste mejor a sus necesidades.
Etiquetas: CosmosDB, delete documents, javascr, SQL, StoreProcedure
0 comentarios:
Publicar un comentario
Suscribirse a Enviar comentarios [Atom]
<< Inicio