Compartir a través de


Crear colección

La Create Collection operación crea una nueva colección en una base de datos.

Nota:

En estos artículos de referencia de API se muestra cómo crear recursos mediante la API del plano de datos de Azure Cosmos DB. Con la API del plano de datos, puede configurar opciones básicas, como la directiva de indexación, las claves de partición del mismo modo que puede usar los SDK de Cosmos DB. Si necesita compatibilidad completa con características para todos los recursos de Azure Cosmos DB, se recomienda usar el proveedor de recursos de Cosmos DB.

Solicitud

Método URI de solicitud Descripción
POST https://{databaseaccount}.documents.azure.com/dbs/{db-id}/colls {databaseaccount} es el nombre de la cuenta de Azure Cosmos DB creada en la suscripción. {db-id} puede ser el identificador o el valor _rid de la base de datos.

encabezados

Consulte Encabezados de solicitud REST comunes de Azure Cosmos DB para ver los encabezados que usan todas las solicitudes de Azure Cosmos DB.

Al construir la firma con hash para el token de clave maestra, ResourceType debe ser "colls". ResourceId debe ser dbs/{db-id}, donde {db-id} puede ser el identificador o el valor _rid de la base de datos.

Propiedad Obligatorio Tipo Descripción
x-ms-offer-throughput Opcionales Number El usuario especificó el rendimiento manual (RU/s) para la colección expresada en unidades de 100 unidades de solicitud por segundo. El mínimo es de 400 hasta 1000 000 (o superior solicitando un aumento del límite).

Solo se debe especificar uno de x-ms-offer-throughput o x-ms-cosmos-offer-autopilot-settings . Estos encabezados no se pueden especificar juntos.
x-ms-cosmos-offer-autopilot-settings Opcionales JSON El usuario especificó el escalado automático máximo de RU/s. El valor es un JSON con la propiedad maxThroughput. Por ejemplo: {"maxThroughput": 4000}.

Solo se debe especificar uno de x-ms-offer-throughput o x-ms-cosmos-offer-autopilot-settings . Estos encabezados no se pueden especificar juntos.

Cuando se usa el escalado automático, se requiere una definición partitionKey .
x-ms-offer-type Opcionales String Se trata de un encabezado heredado para los niveles de rendimiento predefinidos S1, S2 y S3 que se han retirado. Se recomienda usar el rendimiento manual o de escalado automático, como se ha descrito anteriormente.

Body

Propiedad Obligatorio Tipo Descripción
id Obligatorio String Nombre único generado por el usuario para la colección. No puede haber dos colecciones con los mismos identificadores. Es una cadena que no debe tener más de 255 caracteres.
indexingPolicy Opcionales Object Este valor se usa para configurar la directiva de indización. De forma predeterminada, la indización es automática para todas las rutas de acceso de documento dentro de la colección.
partitionKey Obligatorio Object Este valor se usa para configurar la clave de partición que se usará para crear particiones de datos en varias particiones.

Para usar la clave de partición grande, especifique la versión como 2 dentro de la propiedad partitionKey.

Si la versión de la API REST es 2018-12-31 o posterior, la colección debe incluir una definición partitionKey . En versiones anteriores a 2018-12-31, se puede crear una colección heredada sin particiones con rendimiento manual omitiendo la definición partitionKey y asegurándose de que el rendimiento está entre 400 y 10 000 RU/s. Para obtener el mejor rendimiento y escalabilidad, se recomienda establecer siempre una clave de partición.

Obtenga información sobre cómo elegir una buena clave de partición.

Carga de cuerpo de ejemplo

{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "automatic": true,  
    "indexingMode": "Consistent",  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "dataType": "String",  
            "precision": -1,  
            "kind": "Range"  
          }  
        ]  
      }  
    ]  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash",
     "Version": 2

  }  
}  
  

Response

Create Collection devuelve la colección creada como un cuerpo de respuesta.

encabezados

Consulte Encabezados de respuesta REST comunes de Azure Cosmos DB para ver los encabezados devueltos por todas las respuestas de Azure Cosmos DB.

Códigos de estado

La tabla siguiente muestra los códigos de estado comunes que devuelve esta operación. Para obtener una lista completa de los códigos de estado, consulte Códigos de estado HTTP.

Código de estado HTTP Descripción
201 Creado La operación se realizó correctamente.
400 - Solicitud incorrecta El cuerpo JSON no es válido. Compruebe si faltan llaves o comillas.
409 Conflicto Una colección existente ha tomado el identificador proporcionado para la nueva colección.
404 con un código de subestado de 1013 La operación de creación de la colección todavía está en curso.

Si encuentra una excepción de tiempo de espera al crear una colección, ejecute una operación de lectura para validar si la colección se creó correctamente. La operación de lectura emite una excepción hasta que la operación de creación de la colección se realiza correctamente. Si la operación de lectura produce una excepción con el código de estado 404 y el código de subestado de 1013, significa que la operación de creación de la colección sigue en curso. Vuelva a intentar la operación de lectura hasta que obtenga códigos de estado 200 o 201; estos códigos le permiten saber que la colección se ha creado correctamente.

Body

Propiedad Descripción
id Es el nombre único que identifica la nueva colección.
_Librar Es una propiedad generada por el sistema. El identificador de recurso (_rid) es un identificador único que también es jerárquico por la pila de recursos del modelo de recursos. Se usa internamente para la colocación y la navegación del recurso de permiso.
_Ts Es una propiedad generada por el sistema. Especifica la última marca de tiempo actualizada del recurso. El valor es una marca de tiempo.
_propio Es una propiedad generada por el sistema. Es el URI direccionable único para el recurso.
_Etag Se trata de una propiedad generada por el sistema que representa la etag de recursos necesaria para el control de simultaneidad optimista.
_Doc Es una propiedad generada por el sistema que especifica la ruta de acceso direccionable del recurso de documentos.
_sprocs Es una propiedad generada por el sistema que especifica la ruta de acceso direccionable del recurso de procedimientos almacenados (sprocs).
_desencadenantes Es una propiedad generada por el sistema que especifica la ruta de acceso direccionable del recurso desencadenador.
_Udfs Es una propiedad generada por el sistema que especifica la ruta de acceso direccionable del recurso de funciones definidas por el usuario (udfs).
_Conflictos Es una propiedad generada por el sistema que especifica la ruta de acceso direccionable del recurso de conflictos. Durante una operación en un recurso dentro de una colección, si se produce un conflicto, los usuarios pueden inspeccionar los recursos en conflicto realizando una operación GET en la ruta URI en conflicto.
indexingPolicy Es la configuración de la directiva de indexación para la recopilación.
partitionKey Es la configuración de creación de particiones para la recopilación.

Propiedades en Rutas de acceso incluidas

Propiedad Descripción
path Ruta de acceso a la que se aplica el comportamiento de indexación. Las rutas de acceso de índice comienzan con la raíz (/) y suelen terminar con el operador comodín de signo de interrogación (?), lo que indica que hay varios valores posibles para el prefijo. Por ejemplo, para atender la consulta SELECT * FROM Families F WHERE F.familyName = "Andersen", debe incluir una ruta de acceso de índice para /familyName/? en la directiva de índice de la colección.

Las rutas de acceso del índice también pueden usar el operador comodín * para especificar el comportamiento de las rutas de acceso de forma recursiva en el prefijo. Por ejemplo, /payload/* puede usarse para excluir de la indexación a todo el contenido de la propiedad payload.
dataType Es el tipo de datos al que se aplica el comportamiento de indexación. Puede ser String, Number, Point, Polygon o LineString. Los valores booleanos y los valores NULL se indexan automáticamente
kind Tipo de índice. Los índices hash son útiles para las comparaciones de igualdad, mientras que los índices range son útiles para la igualdad, las comparaciones de intervalos y la ordenación. Los índices espaciales son útiles para las consultas espaciales.
precisión Precisión del índice. Puede establecerse en -1 para la precisión máxima o entre 1 y 8 para Number y 1-100 para String. No es aplicable a los tipos de datos Point, Polygon y LineString .

Propiedades en Rutas de acceso excluidas

Propiedad Descripción
path Ruta de acceso que se excluye de la indexación. Las rutas de acceso de índice comienzan con la raíz (/) y suelen terminar con el operador comodín * . Por ejemplo, /payload/* puede usarse para excluir de la indexación a todo el contenido de la propiedad payload.

Propiedades en Clave de partición

Propiedad Descripción
Rutas de acceso Matriz de rutas de acceso mediante las que se pueden particionar los datos de la colección. Las rutas de acceso no deben contener un carácter comodín ni una barra diagonal final. Por ejemplo, la propiedad JSON "AccountNumber" se especifica como "/AccountNumber". La matriz solo debe contener un único valor.
kind Algoritmo utilizado para la creación de particiones. Solo se admite hash.
version Un campo opcional, si no se especifica, el valor predeterminado es 1. Para usar la clave de partición grande, establezca la versión en 2. Para obtener información sobre las claves de partición grandes, consulte el artículo Creación de colecciones con clave de partición grande .

Cuerpo de respuesta de ejemplo

{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "indexingMode": "consistent",  
    "automatic": true,  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "kind": "Range",  
            "dataType": "String",  
            "precision": -1  
          },  
          {  
            "kind": "Range",  
            "dataType": "Number",  
            "precision": -1  
          }  
        ]  
      }  
    ],  
    "excludedPaths": []  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash",
    "Version": 2
  },  
  "_rid": "PD5DALigDgw=",  
  "_ts": 1459200611,  
  "_self": "dbs/PD5DAA==/colls/PD5DALigDgw=/",  
  "_etag": "\"00005900-0000-0000-0000-56f9a2630000\"",  
  "_docs": "docs/",  
  "_sprocs": "sprocs/",  
  "_triggers": "triggers/",  
  "_udfs": "udfs/",  
  "_conflicts": "conflicts/"  
}  
  

Ejemplo 1

En el ejemplo siguiente se crea una colección con un rendimiento manual de 400 RU/s. x-ms-offer-throughput el encabezado se usa para establecer el valor de rendimiento (RU/s). Acepta un número con un valor mínimo de 400 que aumenta en unidades de 100.

POST https://querydemo.documents.azure.com/dbs/testdb/colls HTTP/1.1  
x-ms-offer-throughput: 400  
x-ms.date: 04/20/2021
authorization: type%3dmaster%26ver%3d1.0%26sig%3dpDOKhfllik0BJijp5apzqHL%2bjtoFhsvdhAGE5F8%2bOiE%3d  
Cache-Control: no-cache  
User-Agent: contoso/1.0  
x-ms-version: 2015-12-16  
Accept: application/json  
Host: querydemo.documents.azure.com  
Content-Length: 235  
Expect: 100-continue  
  
{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "automatic": true,  
    "indexingMode": "Consistent",  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "dataType": "String",  
            "precision": -1,  
            "kind": "Range"  
          }  
        ]  
      }  
    ]  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash",
    "Version": 2
  }  
}  
  
HTTP/1.1 201 Created  
Cache-Control: no-store, no-cache  
Pragma: no-cache  
Transfer-Encoding: chunked  
Content-Type: application/json  
Server: Microsoft-HTTPAPI/2.0  
Strict-Transport-Security: max-age=31536000  
x-ms-last-state-change-utc: Mon, 28 Mar 2016 20:00:12.142 GMT  
etag: "00005900-0000-0000-0000-56f9a2630000"  
collection-partition-index: 0  
collection-service-index: 24  
x-ms-schemaversion: 1.1  
x-ms-alt-content-path: dbs/testdb  
x-ms-quorum-acked-lsn: 9  
x-ms-current-write-quorum: 3  
x-ms-current-replica-set-size: 4  
x-ms-request-charge: 4.95  
x-ms-serviceversion: version=1.6.52.5  
x-ms-activity-id: 05d0a3b5-4504-446a-96f4-bef3a3408595  
x-ms-session-token: 0:10  
Set-Cookie: x-ms-session-token#0=10; Domain=querydemo.documents.azure.com; Path=/dbs/PD5DAA==/colls/PD5DALigDgw=  
Set-Cookie: x-ms-session-token=10; Domain=querydemo.documents.azure.com; Path=/dbs/PD5DAA==/colls/PD5DALigDgw=  
x-ms-gatewayversion: version=1.6.52.5  
Date: Mon, 28 Mar 2016 21:30:12 GMT  
  
{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "indexingMode": "consistent",  
    "automatic": true,  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "kind": "Range",  
            "dataType": "String",  
            "precision": -1  
          },  
          {  
            "kind": "Range",  
            "dataType": "Number",  
            "precision": -1  
          }  
        ]  
      }  
    ],  
    "excludedPaths": []  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash"  
  },  
  "_rid": "PD5DALigDgw=",  
  "_ts": 1459200611,  
  "_self": "dbs/PD5DAA==/colls/PD5DALigDgw=/",  
  "_etag": "\"00005900-0000-0000-0000-56f9a2630000\"",  
  "_docs": "docs/",  
  "_sprocs": "sprocs/",  
  "_triggers": "triggers/",  
  "_udfs": "udfs/",  
  "_conflicts": "conflicts/"  
}  
  

Ejemplo 2

En el ejemplo siguiente se crea una colección con un rendimiento máximo de escalabilidad automática de 4000 RU/s (se escala entre 400 y 4000 RU/s). x-ms-cosmos-offer-autopilot-settings el encabezado se usa para establecer el maxThroughput valor , que es el valor máximo de RU/s de escalabilidad automática. Acepta un número con un mínimo de 4000 que aumenta en unidades de 1000. Cuando se usa la escalabilidad automática, se requiere una definición de clave de partición, como se muestra en el ejemplo siguiente:

Nota:

Para habilitar el escalado automático en una base de datos o colección existente, o cambiar de escalabilidad automática a rendimiento manual, consulte el artículo Reemplazar una oferta.

POST https://querydemo.documents.azure.com/dbs/testdb/colls HTTP/1.1
x-ms-cosmos-offer-autopilot-settings: {"maxThroughput": 4000}
x-ms-date: Wed, 22 Jul 2020 22:17:39 GMT
authorization: type%3dmaster%26ver%3d1.0%26sig%3dpDOKhfllik0BJijp5apzqHL%2bjtoFhsvdhAGE5F8%2bOiE%3d
Cache-Control: no-cache  
User-Agent: contoso/1.0
x-ms-version: 2018-12-31
Accept: application/json  
Host: querydemo.documents.azure.com  
Content-Length: 235  
Expect: 100-continue  
  
{  
  "id": "testcoll",  
  "indexingPolicy": {  
    "automatic": true,  
    "indexingMode": "Consistent",  
    "includedPaths": [  
      {  
        "path": "/*",  
        "indexes": [  
          {  
            "dataType": "String",  
            "precision": -1,  
            "kind": "Range"  
          }  
        ]  
      }  
    ]  
  },  
  "partitionKey": {  
    "paths": [  
      "/AccountNumber"  
    ],  
    "kind": "Hash",
    "Version": 2
  }  
}  
  

Consulte también