当前位置: 首页 > 知识库问答 >
问题:

Azure cosmos db集合未获取分区密钥

齐英耀
2023-03-14
await client.CreateDatabaseIfNotExistsAsync(new Database() { Id = "data"});
DocumentCollection dCollection = await client.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri("data"), new DocumentCollection { Id = "coll"}, new RequestOptions { OfferThroughput = 400, , PartitionKey = new PartitionKey("/id") });
// dashboardCollection.PartitionKey.Paths.Add("/id");

当我转到portal.azure.com并检查我的文档数据库时,集合就创建了。当我转到集合的scale and settings时,我看不到分区键。

我手动创建了另一个集合,它在scale and settings部分中显示了分区键。

由于此分区键错误,delete函数引发错误

ResourceResponse<Document> response = await client.DeleteDocumentAsync(UriFactory.CreateDocumentUri("data", "coll", "1"), new RequestOptions { PartitionKey = new PartitionKey("1") });

共有1个答案

危宜
2023-03-14

我来自CosmosDB工程团队。

创建DocumentCollection时,请确保在DocumentCollection对象中提供分区键,如下所示:

PartitionKeyDefinition pkDefn = new PartitionKeyDefinition() { Paths = new Collection<string>() { "/id" } };
DocumentCollection dCollection = await client.CreateDocumentCollectionIfNotExistsAsync(UriFactory.CreateDatabaseUri("data"), new DocumentCollection { Id = "coll", PartitionKey = pkDefn }, new RequestOptions { OfferThroughput = 400, PartitionKey = new PartitionKey("/id") });

在collection CRUD请求期间,RequestOptions上的PartitionKey不会被执行,因为我们希望PartitionKey是collection对象的一部分。在文档CRUD请求期间执行RequestOptions上的PartitionKey。

 类似资料:
  • 我的问题与[这里][1]相同。我已经创建了一个索引“

  • 我正在使用aws sdk go库实现Golang的DynamoDb连接。 我的DynamoDb表有一个分区键DeviceId(String)和一个排序键Time(Number)。如何编写GetItemInput以获取具有特定DeviceId的所有数据?

  • 如果我有一个主题,它有5个分区,然后我有一个服务消耗这5个分区。然后在consumer,我轮询并返回一个ConsumerRecords数组。 每个单独的ConsumerRecord是否可以来自这5个分区中的任何一个?

  • 参考文献: https://docs.datastax.com/en/cql/3.1/cql/ddl/ddl_compound_keys_c.html Cassandra中分区键、复合键和聚类键的区别?

  • 问题内容: 它是纠正与Java 8,你需要执行下面的代码确实获得从平行流Collection? 从CollectionAPI: 默认Stream parallelStream() 返回一个可能与此流作为其源的并行Stream。此方法允许返回顺序流。 从BaseStreamAPI: S parallel() 返回并行的等效流。可能由于流已经是并行的,或者因为基础流的状态被修改为并行而返回自身。 我需

  • 在Java8中,您需要执行以下代码才能从中获得并行流,这是否正确? 来自API: 默认流parallelStream()