【问题标题】:Failed to Create document in to azure Cosmos-db using Azure Android SDK无法使用 Azure Android SDK 在 azure Cosmos-db 中创建文档
【发布时间】:2019-11-14 10:26:36
【问题描述】:

我正在使用 azure android SDK 将新记录添加到集合项中。 我们的 cosmos-DB 没有分区键。所以我将它作为 null 传递。

它会给我以下错误

在 x-ms-partitionkey 标头中提供的分区键的组件比集合中定义的要少

谁能帮我摆脱困境?

【问题讨论】:

  • 如果您编辑您的问题以包含更多详细信息,例如您为将数据插入 Cosmos DB 所编写的代码,这会有所帮助。也就是说:您不能创建没有分区键的集合(您可以指定 /id,因为该属性始终存在,但是...您需要在创建集合时指定 something)。跨度>
  • @Karan Ekkawala 这个问题解决了吗?
  • 很高兴见到你,是的,我已经通过分配分区键解决了这些问题,如下面的 cmets 中所述。让我知道是否可以再为您提供帮助。
  • 嘿我面临同样的问题,仍然没有为我解决。你能帮我吗 。在我的数据库中,我有一个名为“/items”的分区键,但是当我使用它时,它会给出错误提示键不匹配

标签: azure azure-cosmosdb azure-android-sdk


【解决方案1】:

您需要使用@PartitionKey 注释将您正在使用的属性标记为分区键,例如:

@PartitionKey
    var testKey = ""

在 C# 中,我们使用 Undefined.Value 一切都会好起来的。

client.DeleteDocumentAsync(
          UriFactory.CreateDocumentUri(DbName, CollectionName, id), 
          new RequestOptions() { PartitionKey = new PartitionKey(Undefined.Value) });

【讨论】:

  • 感谢@Sajeetjaran,但是我们在android中没有将分区键值设置为未定义的选项,但是我们有另一种方法可以传递分区键值,但它是TypeOf (字符串)将为我们创建。试图覆盖 SDK 方法,让我们看到最好的结果
【解决方案2】:

azure android SDK 需要分区键,它不接受 null 或空。此外,如果您有一堆记录要存储在 cosmos DB 中,那么您必须使用分区键,否则您将来可能会遇到分区键限制达到的问题。 Azure 为逻辑分区提供最大 10 GB 的空间。

我已经使用用户明智的分区创建了一个新集合,并传递了分区键值,例如。 patitionKey=/.UserID 在我的对象中。这对我有用。还管理分区键限制问题。

所以最好提前使用分区键以避免以后出现问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 2019-03-30
    • 1970-01-01
    • 2020-12-22
    相关资源
    最近更新 更多