Skapa samling

Åtgärden Create Collection skapar en ny samling i en databas.

Anteckning

Dessa API-referensartiklar visar hur du skapar resurser med hjälp av Azure Cosmos DB-dataplans-API:et. Med API:et för dataplanet kan du konfigurera grundläggande alternativ, till exempel indexeringsprincip, partitionsnycklar ungefär som du kan med Cosmos DB-SDK:er. Om du behöver fullständigt funktionsstöd för alla Azure Cosmos DB-resurser rekommenderar vi att du använder Cosmos DB-resursprovidern.

Förfrågan

Metod URI för förfrågan Description
POST https://{databaseaccount}.documents.azure.com/dbs/{db-id}/colls {databaseaccount} är namnet på det Azure Cosmos DB-konto som skapats under din prenumeration. {db-id} kan vara antingen ID:t eller _rid värdet för databasen.

Sidhuvuden

Se Vanliga REST-begärandehuvuden för Azure Cosmos DB för rubriker som används av alla Azure Cosmos DB-begäranden.

När du skapar den hashade signaturen för huvudnyckeltoken ska ResourceType vara "colls". ResourceId ska vara dbs/{db-id}, där {db-id} kan vara antingen ID:t eller _rid värdet för databasen.

Egenskap Krävs Typ Description
x-ms-offer-throughput Valfritt Tal Användaren angav manuellt dataflöde (RU/s) för samlingen uttryckt i enheter om 100 enheter för programbegäran per sekund. Minimivärdet är 400 upp till 1 000 000 (eller högre genom att begära en gränsökning).

Endast en av x-ms-offer-throughput eller x-ms-cosmos-offer-autopilot-settings måste anges. Dessa rubriker kan inte anges tillsammans.
x-ms-cosmos-offer-autopilot-settings Valfritt JSON Användaren har angett maximalt antal RU/s för autoskalning. Värdet är en JSON med egenskapen maxThroughput. Exempel: {"maxThroughput": 4000}.

Endast en av x-ms-offer-throughput eller x-ms-cosmos-offer-autopilot-settings måste anges. Dessa rubriker kan inte anges tillsammans.

När autoskalning används krävs en partitionKey-definition .
x-ms-offer-type Valfritt Sträng Det här är en äldre rubrik för fördefinierade prestandanivåer S1, S2 och S3 som har dragits tillbaka. Vi rekommenderar att du använder antingen manuellt dataflöde eller autoskalningsdataflöde enligt beskrivningen ovan.

Brödtext

Egenskap Krävs Typ Description
id Obligatorisk Sträng Det användargenererade unika namnet för samlingen. Inga två samlingar kan ha samma ID:n. Det är en sträng som inte får innehålla fler än 255 tecken.
indexingPolicy Valfritt Objekt Det här värdet används för att konfigurera indexeringsprincipen. Som standard är indexeringen automatisk för alla dokumentsökvägar i samlingen.
partitionKey Obligatorisk Objekt Det här värdet används för att konfigurera partitionsnyckeln som ska användas för att partitionera data i flera partitioner.

Om du vill använda en stor partitionsnyckel anger du versionen som 2 i egenskapen partitionKey.

Om REST API-versionen är 2018-12-31 eller högre måste samlingen innehålla en partitionKey-definition . I versioner som är äldre än 2018-12-31 kan en äldre icke-partitionerad samling med manuellt dataflöde skapas genom att utelämna partitionKey-definitionen och se till att dataflödet är mellan 400 och 10 000 RU/s. För bästa prestanda och skalbarhet rekommenderar vi att du alltid anger en partitionsnyckel.

Lär dig mer om hur du väljer en bra partitionsnyckel.

Exempel på nyttolast för brödtext

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

  }  
}  
  

Svarsåtgärder

Skapa samling returnerar den skapade samlingen som en svarstext.

Sidhuvuden

Se Vanliga REST-svarshuvuden för Azure Cosmos DB för rubriker som returneras av alla Azure Cosmos DB-svar.

Statuskoder

I följande tabell visas vanliga statuskoder som returneras av den här åtgärden. En fullständig lista över statuskoder finns i HTTP-statuskoder.

HTTP-statuskod Beskrivning
201 Skapad Åtgärden lyckades.
400 Felaktig begäran JSON-brödtexten är ogiltig. Sök efter saknade klammerparenteser eller citattecken.
409 – Konflikt ID:t för den nya samlingen har tagits av en befintlig samling.
404 med understatuskoden 1013 Insamlingsåtgärden för att skapa pågår fortfarande.

Om du stöter på timeout-undantag när du skapar en samling kör du en läsåtgärd för att kontrollera om samlingen har skapats. Läsåtgärden utlöser ett undantag tills åtgärden för att skapa samlingen lyckas. Om läsåtgärden utlöser ett undantag med statuskoden 404 och understatuskoden 1013 innebär det att åtgärden för att skapa samlingen fortfarande pågår. Försök att läsa igen tills du får statuskoderna 200 eller 201. Dessa koder meddelar dig att samlingen har skapats.

Brödtext

Egenskap Beskrivning
id Det är det unika namnet som identifierar den nya samlingen.
_Bli Det är en systemgenererad egenskap. Resurs-ID (_rid) är en unik identifierare som också är hierarkisk per resursstacken på resursmodellen. Den används internt för placering och navigering av behörighetsresursen.
_Ts Det är en systemgenererad egenskap. Den anger resursens senast uppdaterade tidsstämpel. Värdet är en tidsstämpel.
_Själv Det är en systemgenererad egenskap. Det är den unika adresserbara URI:n för resursen.
_Etag Det är en systemgenererad egenskap som representerar resursetaggen som krävs för optimistisk samtidighetskontroll.
_Doc Det är en systemgenererad egenskap som anger dokumentresursens adresserbara sökväg.
_sprocs Det är en systemgenererad egenskap som anger den adresserbara sökvägen för resursen lagrade procedurer (sprocs).
_Utlösare Det är en systemgenererad egenskap som anger den adresserbara sökvägen för utlösarresursen.
_udfs Det är en systemgenererad egenskap som anger den adresserbara sökvägen för den användardefinierade funktionsresursen (udfs).
_Konflikter Det är en systemgenererad egenskap som anger den adresserbara sökvägen för konfliktresursen. Under en åtgärd på en resurs i en samling, om en konflikt inträffar, kan användarna inspektera de resurser som står i konflikt genom att utföra en GET på konflikt-URI-sökvägen.
indexingPolicy Det är indexeringsprincipinställningarna för samlingen.
partitionKey Det är konfigurationsinställningarna för partitionering för samlingen.

Egenskaper under Inkluderade sökvägar

Egenskap Beskrivning
Sökvägen Sökväg som indexeringsbeteendet gäller för. Indexsökvägar börjar med roten (/) och slutar vanligtvis med frågetecknet (?) jokerteckenoperator, vilket anger att det finns flera möjliga värden för prefixet. Om du till exempel vill visa SELECT * FROM Families F WHERE F.familyName = "Andersen" måste du inkludera en indexsökväg för /familyName/? i samlingens indexprincip.

Indexsökvägar kan också använda operatorn * jokertecken för att ange beteendet för sökvägar rekursivt under prefixet. Till exempel kan /payload/* användas för att undanta allt under nyttolastegenskapen från indexering.
Datatyp Det är den datatyp som indexeringsbeteendet tillämpas på. Kan vara Sträng, Tal, Punkt, Polygon eller LineString. Booleska värden och null-värden indexeras automatiskt
Typ Typ av index. Hash-index är användbara för likhetsjämförelser medan Intervallindex är användbara för likhet, intervalljämförelser och sortering. Rumsliga index är användbara för rumsliga frågor.
Precision Indexets precision. Kan antingen anges till -1 för maximal precision eller mellan 1–8 för Tal och 1–100 för Sträng. Gäller inte för datatyperna Point, Polygon och LineString .

Egenskaper under Undantagna sökvägar

Egenskap Beskrivning
Sökvägen Sökväg som undantas från indexering. Indexsökvägar börjar med roten (/) och slutar vanligtvis med operatorn * jokertecken. Till exempel kan /payload/* användas för att undanta allt under nyttolastegenskapen från indexering.

Egenskaper under partitionsnyckel

Egenskap Beskrivning
Sökvägar En matris med sökvägar som använder vilka data i samlingen som kan partitioneras. Sökvägar får inte innehålla jokertecken eller avslutande snedstreck. JSON-egenskapen "AccountNumber" anges till exempel som "/AccountNumber". Matrisen får bara innehålla ett enda värde.
Typ Algoritmen som används för partitionering. Endast hash stöds.
Version Ett valfritt fält, om det inte anges är standardvärdet 1. Om du vill använda den stora partitionsnyckeln anger du versionen till 2. Mer information om stora partitionsnycklar finns i artikeln om hur du skapar samlingar med stor partitionsnyckel .

Exempel på svarstext

{  
  "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/"  
}  
  

Exempel 1

I följande exempel skapas en samling med ett manuellt dataflöde på 400 RU/s. x-ms-offer-throughput -huvudet används för att ange dataflödesvärdet (RU/s). Den accepterar ett tal med ett minsta värde på 400 som ökar med enheter på 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/"  
}  
  

Exempel 2

I följande exempel skapas en samling med ett maximalt dataflöde för autoskalning på 4 000 RU/s (den skalas mellan 400 och 4 000 RU/s). x-ms-cosmos-offer-autopilot-settings -huvudet används för att ange maxThroughput värdet, vilket är maxvärdet för autoskalning av RU/s. Den accepterar ett tal med minst 4 000 som ökar med enheter på 1 000. När autoskalning används krävs en partitionsnyckeldefinition, som du ser i följande exempel:

Anteckning

Om du vill aktivera autoskalning för en befintlig databas eller samling eller växla från autoskalning till manuellt dataflöde läser du artikeln Ersätt ett erbjudande.

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

Se även