2017-08-21 11 views
0

selectクエリを使用してazure-cosmos DBから100を超えるレコードを取得したいとします。クエリを使用してazure cosmos dbからすべてのレコードを取得する方法

私はストアドプロシージャを作成し、selectクエリを使用してレコードを取得しています。

これは私のストアドプロシージャである -

当初
function getall(){ 
var context = getContext(); 
    var response = context.getResponse(); 
    var collection = context.getCollection(); 
    var collectionLink = collection.getSelfLink(); 

    var filterQuery = 'SELECT * FROM c'; 

    collection.queryDocuments(collectionLink, filterQuery, {pageSize:-1 }, 
    function(err, documents) { 
     response.setBody(response.getBody() + JSON.stringify(documents)); 
    } 
); 
} 

、これは、データベース内のデータの少ない量で働いていました。

しかし、大量のデータを用いて、 ストアドプロシージャがこの例外をスローされる -

Encountered exception while executing function. Exception = Error: Resulting message would be too large because of "Body". Return from script with current message and use continuation token to call the script again or modify your script. Stack trace: Error: Resulting message would be too large because of "Body". Return from script with current message and use continuation token to call the script again or modify your script.

+0

大量のデータの具体的な量を教えてください。 –

+0

700レコード後に問題が発生し、各レコードの最大サイズは最大1 MBです。 – Tarun

答えて

0

文書DBは、応答ページ・サイズに制限を課します。 このリンクには、次の制限の一部がまとめられています。 Azure DocumentDb Storage Limits - what exactly do they mean?

継続トークンを使用してデータに改ページを行うことができます。 Document Db SDKは、ページ単位のデータの読み込みをシームレスにサポートしています。 https://azure.microsoft.com/en-us/blog/documentdb-paging-support-with-top-and-more-query-improvements/

0

.NET sdkを使用して、ストアドプロシージャから返されたデータを取得していますか?その場合は、.HasMoreResultsを利用してください。それは自動的に許可されたサイズのデータ​​結果を取得し、投稿したエラーを表示しません。フェッチされた結果がなくなるまでループします。

http://www.kevinkuszyk.com/2016/08/19/paging-through-query-results-in-azure-documentdb/

関連する問題