En este capÃtulo, aprenderemos cómo actualizar documentos. Con Azure Portal, puede actualizar fácilmente un documento abriéndolo en el explorador de documentos y actualizándolo en el editor como un archivo de texto.
Haga clic en el botón «Guardar». Ahora, cuando necesite cambiar un documento con.Net SDK, simplemente puede reemplazarlo. No tiene que eliminarlo y volver a crearlo, lo que, además de ser tedioso, también cambiarÃa el ID del recurso, lo que no querrÃa hacer cuando simplemente cambie el documento. Estos son los siguientes pasos para actualizar su documento usando.Net SDK.
Echemos un vistazo a la siguiente tarea ReplaceDocuments en la que consultaremos documentos en los que la propiedad isNew sea verdadera, pero no obtendremos nada porque no están allÃ. Asà que cambiemos los documentos que agregamos anteriormente, aquellos cuyos nombres comienzan con Nuevo cliente.
Paso 1 – Agregue la propiedad isNew a estos documentos y establézcala en verdadero.
private async static Task ReplaceDocuments(DocumentClient client) { Console.WriteLine(); Console.WriteLine(">>> Replace Documents <<<"); Console.WriteLine(); Console.WriteLine("Quering for documents with 'isNew' flag"); var sql = "SELECT * FROM c WHERE c.isNew = true"; var documents = client.CreateDocumentQuery(collection.SelfLink, sql).ToList(); Console.WriteLine("Documents with 'isNew' flag: {0} ", documents.Count); Console.WriteLine(); Console.WriteLine("Quering for documents to be updated"); sql = "SELECT * FROM c WHERE STARTSWITH(c.name, 'New Customer') = true"; documents = client.CreateDocumentQuery(collection.SelfLink, sql).ToList(); Console.WriteLine("Found {0} documents to be updated", documents.Count); foreach (var document in documents) { document.isNew = true; var result = await client.ReplaceDocumentAsync(document._self, document); var updatedDocument = result.Resource; Console.WriteLine("Updated document 'isNew' flag: {0}", updatedDocument.isNew); } Console.WriteLine(); Console.WriteLine("Quering for documents with 'isNew' flag"); sql = "SELECT * FROM c WHERE c.isNew = true"; documents = client.CreateDocumentQuery(collection.SelfLink, sql).ToList(); Console.WriteLine("Documents with 'isNew' flag: {0}: ", documents.Count); Console.WriteLine(); }
Paso 2 – Obtener documentos para actualizar utilizando la misma consulta de STARTSWITH que nos da los documentos que devolvemos aquà como objetos dinámicos.
Paso 3 – Adjunte la propiedad isNew y establézcala en true para cada documento.
Paso 4 – Llame a ReplaceDocumentAsync pasando el SelfLink del documento junto con el documento actualizado.
Ahora, para demostrar que funcionó, solicite documentos donde isNew sea verdadero. Llamemos a las solicitudes anteriores desde la tarea CreateDocumentClient.
private static async Task CreateDocumentClient() { // Create a new instance of the DocumentClient using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) { database = client.CreateDatabaseQuery("SELECT * FROM c WHERE c.id = 'myfirstdb'").AsEnumerable().First(); collection = client.CreateDocumentCollectionQuery(database.CollectionsLink, "SELECT * FROM c WHERE c.id = 'MyCollection'").AsEnumerable().First(); //await CreateDocuments(client); //QueryDocumentsWithSql(client); //await QueryDocumentsWithPaging(client); //QueryDocumentsWithLinq(client); await ReplaceDocuments(client); } }
Cuando se compile y ejecute el código anterior, obtendrá el siguiente resultado.
**** Replace Documents **** Quering for documents with 'isNew' flag Documents with 'isNew' flag: 0 Quering for documents to be updated Found 2 documents to be updated Updated document ‘isNew’ flag: True Updated document ‘isNew’ flag: True Quering for documents with 'isNew' flag Documents with 'isNew' flag: 2
🚫