web-dev-qa-db-ja.com

Azure cosmosDBでのID作成をオーバーライドします

JSONドキュメントがあります。これをAzurecosmosdbにプッシュする必要があります。 DocumentDBデータ移行ツールを使用してjsonファイルをAzurecosmosDBにダンプしています。問題は、JSONにすべてのレコードで同じIDフィールドが含まれていることです。たとえば、.

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

また、このidフィールドのため、コレクションに複数のレコードを挿入できません。1つのレコードを挿入した後、「指定されたIDのリソースは既に存在します」というエラーメッセージが表示されます。 cosmos DBにJSONのidフィールドを無視させ、idフィールドが見つからない場合と同様に、エントリごとにGUIDを作成する方法はありますか?.

ありがとう、ヤジュ

5
yaju

多くの検索を行った後、jsonに「id」(大文字と小文字を区別)という名前の列がある場合、cosmos dbはその列の値をドキュメントのIDとして作成するため、他の列は使用できないという判断に達しました。一意の識別子として。 cosmosがidフィールドを見つけられない場合、ドキュメントのIDとしてGUIDを作成します。

5
yaju

Microsoft.Azure.Documents.Resource.Idドキュメント 固定名"id"でJSONでシリアル化されていることを示唆しています:

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

したがって、別のプロパティをストレージPKとして使用することはできません。

できることは、JSONドキュメントを自分で変換することです。たとえば、現在のidの名前をoriginalIdなどに変更します。次に、documentDBはインポート時に一意のIDを生成します。

2
Imre Pühvel