DocumentDB – Insertar documento

En este capítulo, comenzaremos a trabajar con documentos reales de la colección. Puede crear documentos mediante Azure Portal o.Net SDK.

Cree documentos en el portal de Azure

Echemos un vistazo a los siguientes pasos para agregar un documento a su colección.

Paso 1 – Agregue una nueva colección de familias S1 a myfirstdb.

Insertar documento

Paso 2 – Seleccione la colección Familias y haga clic en Nuevo documento para abrir la columna Nuevo documento.

Colección familiar

Es un editor de texto simple que le permite ingresar cualquier JSON para un nuevo documento.

editor de texto simple

Paso 3 – Dado que se trata de una entrada de datos sin procesar, pasemos a nuestro primer documento.

{
   "id": "AndersenFamily", 
   "lastName": "Andersen", 
	
   "parents": [ 
      { "firstName": "Thomas", "relationship": "father" }, 
      { "firstName": "Mary Kay", "relationship": "mother" } 
   ], 
	
   "children": [ 
      { 
         "firstName": "Henriette Thaulow", 
         "gender": "female", 
         "grade": 5, 
         "pets": [ { "givenName": "Fluffy", "type": "Rabbit" } ] 
      } 
   ], 
	
   "location": { "state": "WA", "county": "King", "city": "Seattle"}, 
   "isRegistered": true
}

Cuando ingrese al documento anterior, verá la siguiente pantalla.

Documento

Tenga en cuenta que hemos proporcionado la identificación del documento. El valor de id siempre es obligatorio y debe ser único en todos los demás documentos de la misma colección. Si no lo especifica, DocumentDB lo generará automáticamente utilizando un GUID o un identificador único global.

El identificador es siempre una cadena y no puede ser un número, fecha, booleano u otro objeto, y no puede tener más de 255 caracteres.

Observe también la estructura jerárquica del documento, que tiene varias propiedades de nivel superior, como el identificador requerido, así como lastName e isRegistered, pero también tiene propiedades anidadas.

Por ejemplo, la propiedad principal se proporciona como una matriz JSON indicada por corchetes. También tenemos otro arreglo para niños, aunque en este ejemplo solo hay un niño en el arreglo.

Paso 4 – Haga clic en el botón «Guardar» para guardar el documento y hemos creado nuestro primer documento.

Como puede ver, se ha aplicado un formato agradable a nuestro JSON que divide cada propiedad en una línea separada, con sangría con un espacio para transmitir el nivel de anidamiento de cada propiedad.

Guardar documento

El portal incluye un explorador de documentos, así que usémoslo ahora para obtener el documento que acabamos de crear.

Obtener el documento

Paso 5 – Seleccione una base de datos y cualquier colección en la base de datos para ver los documentos de esa colección. Actualmente solo tenemos una base de datos llamada myfirstdb con una colección llamada Familias, las cuales están preseleccionadas aquí en los menús desplegables.

seleccionar base de datos

De forma predeterminada, el explorador de documentos muestra una lista sin filtrar de los documentos de la colección, pero también puede buscar cualquier documento específico por ID o varios documentos basados ​​en búsquedas de comodines de ID parciales.

Hasta ahora, solo tenemos un documento en nuestra colección, y vemos su ID en la siguiente pantalla, AndersonFamily.

PASO 6 – Haga clic en un identificador para ver el documento.

Haga clic en ID

Crear documentos con.NET SDK

Como sabe, los documentos son solo otro tipo de recurso y ya está familiarizado con cómo manejar los recursos utilizando el SDK.

  • Una gran diferencia entre los documentos y otros recursos es que, por supuesto, no contienen esquema.

  • Por tanto, hay muchas opciones. Naturalmente, puede trabajar con gráficos de objetos JSON o incluso cadenas de texto JSON sin procesar, pero también puede usar objetos dinámicos que le permitan enlazar propiedades en tiempo de ejecución sin definir una clase en tiempo de compilación.

  • También puede trabajar con objetos reales de C #, o Entidades como se les llama, que pueden ser clases en su área de negocios.

Comencemos a crear documentos usando.Net SDK. Los siguientes son los pasos.

Paso 1 – Cree una instancia de DocumentClient, luego consultaremos la base de datos myfirstdb y luego consultaremos la colección MyCollection que almacenamos en esta colección privada de variables para que esté disponible para toda la clase.

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); 
   } 
}

Paso 2 – Cree varios documentos en la tarea CreateDocuments.

private async static Task CreateDocuments(DocumentClient client) {
   Console.WriteLine(); 
   Console.WriteLine("**** Create Documents ****"); 
   Console.WriteLine();
	
   dynamic document1Definition = new {
      name = "New Customer 1", address = new {
         addressType = "Main Office", 
         addressLine1 = "123 Main Street", 
         location = new {
            city = "Brooklyn", stateProvinceName = "New York" 
         }, postalCode = "11229", countryRegionName = "United States"
      }, 
   };
	
   Document document1 = await CreateDocument(client, document1Definition); 
   Console.WriteLine("Created document {0} from dynamic object", document1.Id); 
   Console.WriteLine(); 
} 

El primer documento se creará a partir de este objeto dinámico. Puede parecer JSON, pero por supuesto que no lo es. Este es código C # y estamos creando un objeto.NET real, pero no hay una definición de clase. En cambio, las propiedades se infieren de la forma en que se inicializó el objeto.

Tenga en cuenta que no hemos proporcionado una propiedad Id para este documento.

Ahora echemos un vistazo a CreateDocument. Esto es similar al mismo patrón que vimos para crear bases de datos y colecciones.

private async static Task<Document> CreateDocument(DocumentClient client,
   object documentObject) {
	
   var result = await client.CreateDocumentAsync(collection.SelfLink, documentObject); 
   var document = result.Resource;
	
   Console.WriteLine("Created new document: {0}rn{1}", document.Id, document); 
   return result; 
}

Paso 3 – Esta vez llamamos CreateDocumentAsync especificando el SelfLink de la colección a la que queremos agregar el documento. Obtenemos una respuesta con una propiedad de recurso, que en este caso representa un nuevo documento con sus propiedades generadas por el sistema.

Un objeto de documento es una clase específica en el SDK que hereda de un recurso, por lo que tiene todas las propiedades comunes del recurso, pero también incluye propiedades dinámicas que definen el documento en sí mismo sin un esquema.

private async static Task CreateDocuments(DocumentClient client) {
   Console.WriteLine(); 
   Console.WriteLine("**** Create Documents ****"); 
   Console.WriteLine();  
	
   dynamic document1Definition = new {
      name = "New Customer 1", address = new { 
         addressType = "Main Office",
         addressLine1 = "123 Main Street", 
         location = new {
            city = "Brooklyn", stateProvinceName = "New York" 
         }, postalCode = "11229", countryRegionName = "United States" 
      }, 
   };
	
   Document document1 = await CreateDocument(client, document1Definition); 
   Console.WriteLine("Created document {0} from dynamic object", document1.Id); 
   Console.WriteLine();
}

Cuando se compile y ejecute el código anterior, obtendrá el siguiente resultado.

**** Create Documents ****  
Created new document: 34e9873a-94c8-4720-9146-d63fb7840fad {
   "name": "New Customer 1", 
	
   "address": { 
      "addressType": "Main Office", 
      "addressLine1": "123 Main Street", 
      "location": { 
         "city": "Brooklyn", "stateProvinceName": "New York" 
      }, 
      "postalCode": "11229", "countryRegionName": "United States"
   }, 
	
   "id": "34e9873a-94c8-4720-9146-d63fb7840fad", 
   "_rid": "Ic8LAMEUVgACAAAAAAAAAA==", 
   "_ts": 1449812756, 
   "_self": "dbs/Ic8LAA==/colls/Ic8LAMEUVgA=/docs/Ic8LAMEUVgACAAAAAAAAAA==/", 
   "_etag": ""00001000-0000-0000-0000-566a63140000"", 
   "_attachments": "attachments/" 
} 
Created document 34e9873a-94c8-4720-9146-d63fb7840fad from dynamic object 

Como puede ver, no proporcionamos una identificación, sin embargo, DocumentDB generó una para el nuevo documento.

🚫