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を作成する方法はありますか?.
ありがとう、ヤジュ
多くの検索を行った後、jsonに「id」(大文字と小文字を区別)という名前の列がある場合、cosmos dbはその列の値をドキュメントのIDとして作成するため、他の列は使用できないという判断に達しました。一意の識別子として。 cosmosがidフィールドを見つけられない場合、ドキュメントのIDとしてGUIDを作成します。
Microsoft.Azure.Documents.Resource.Idドキュメント 固定名"id"
でJSONでシリアル化されていることを示唆しています:
[Newtonsoft.Json.JsonProperty(PropertyName="id")]
public virtual string Id { get; set; }
したがって、別のプロパティをストレージPKとして使用することはできません。
できることは、JSONドキュメントを自分で変換することです。たとえば、現在のid
の名前をoriginalId
などに変更します。次に、documentDBはインポート時に一意のIDを生成します。