2016-03-17 10 views
9

オブジェクトには複数のドキュメントがあるドキュメントリスト(オブジェクト)があります.Jsonレコードは存在しますが、ドキュメント(レコード)シングルドキュメントのレコードをアップロードしている間は、それはうまくアップロードされます。上記のコードドキュメントDBに複数のドキュメント(バルク)をアップロードする方法

List<MyModelClass> listObj = new List<MyModelClass>(); 
    Document doc = await DocumentClient.CreateDocumentAsync("dbs/" + DocumentDatabase.Id + "/colls/" + DocumentCollection.Id, listObj); 

私はすべてをアップロードするには、他の方法をしたい.....このコードは私のために働いている.....

Syntax : CreateDocumentAsync(String, Object, RequestOptions, Boolean) 
Object :- Document object // I Know it as per syntax it need to be "Document Type". 

foreach (var item in listObj) 
    { 
     Document doc = await Client.CreateDocumentAsync("dbs/" + DocumentDatabase.Id + "/colls/" + DocumentCollection.Id, item); 
    } 

が動作していません文書を一度に....

答えて

12

一度に複数のドキュメントを挿入することはできません。 CreateDocumentAsync()への呼び出しは、単一の文書のみを対象としています。

これを達成するには、これを達成するためのサーバー側のストアドプロシージャのいくつかの種類を考案してから、ドキュメント配列を1回の呼び出しで関数に渡す必要があります。基本的に文書の配列をローカルに作成し、そのストアード・プロシージャーで配列をウォークスルーすることによって、サーバー側の関数を使用して他の誰かがこの問題を解決したかを確認することができます。this answerだから、(その答えから抜粋として)このようなものの作成:

docObject = { 
    "items": [{doc}, {doc}, {doc}] 
} 

をそして、あなたのストアドプロシージャにdocObjectを渡します。

最終的には、ストアドプロシージャはドキュメントごとに個別の挿入呼び出しを行います。しかし...あなたは複数のネットワーク往復を持たないでしょう。そして、挿入はトランザクション的になります(挿入が失敗した場合、または例外がスローされた場合、他の挿入はロールバックされます)。

+0

@ davidの答えは、一括インポートストアドプロシージャのサンプルです - https://github.com/Azure/azure-documentdb-js-server/blob/master/samples/stored-procedures/BulkImport.js –

+0

ありがとう、デイヴィッドとライアン、あなたの答えは私のために本当に役立ちます。 –

+0

"ExecuteStoredProcedureAsync"メソッドを実行するために問題が発生しました。私のexecuttionポインタが "ExecuteStoredProcedureAsync"メソッドに行き、何も起こりません。例外はありません。 –

-6

私はあなたがDocumentClient.CreateDocumentCollectionAsyncメソッドを探しているかもしれないと思います。

+3

'CreateDocumentCollectionAsync()'はドキュメントのグループではなく_collections_を作成するためのものです。 –

関連する問題