首页 文章

覆盖Azure cosmos DB中的ID创建

提问于
浏览
1

我有一个JSON文档,我需要推送到azure cosmos db . 我正在使用DocumentDB数据迁移工具将我的json文件转储到azure cosmos DB . 问题是我的JSON包含一个id字段,它对所有记录都是相同的 . 对于e,g .

"angularAcceleration_T12_x:-0.137993,"id":"5946001","jointAngle_jRightHip_z"

由于这个 id 字段,我无法在我的集合中插入超过1条记录,因为在插入一条记录后,我收到错误消息"resource with specified id already exist" . 有没有办法强制cosmos DB忽略JSON中的id字段并为每个条目创建一个GUID,就像它没有找到id字段一样 .

谢谢,雅居

2 回答

  • 2

    经过大量的搜索,我得出结论,如果你的json中有一个名为“id”(区分大小写)的列,cosmos db将把该列值作为文档的id,你不能使用任何其他列作为唯一标识符 . 如果cosmos找不到id字段,它将创建一个GUID作为文档的id .

  • 4

    Microsoft.Azure.Documents.Resource.Id documentation提示它是以JSON序列化的,具有固定名称 "id"

    [Newtonsoft.Json.JsonProperty(PropertyName="id")]
    public virtual string Id { get; set; }
    

    所以,我会说 you cannot use another property as storage PK .

    您可以做的是自己转换JSON文档,例如将当前 id 重命名为 originalId 或类似 . 然后,documentDB将为您导入导入的唯一ID .

相关问题