覆盖Azure cosmos DB

时间:2018-01-30 08:47:42

标签: azure azure-cosmosdb

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

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

由于这个 id 字段,我无法在我的集合中插入多条记录,因为在插入一条记录后,我收到错误消息“已存在指定ID的资源”。 有没有办法强制cosmos DB忽略JSON中的id字段并为每个条目创建一个GUID,就像它没有找到id字段一样。

谢谢, 雅居

2 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:3)

Microsoft.Azure.Documents.Resource.Id documentation暗示它是使用固定名称"id"的JSON序列化的:

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

所以,我会说你不能使用另一个属性作为存储PK

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