/// <summary> /// Queries the collection /// https://msdn.microsoft.com/en-us/library/azure/dn783363.aspx /// </summary> /// <param name="queryString">Query string</param> /// <param name="queryParams">Query parameters</param> /// <param name="pageSize">Page size for result paging</param> /// <param name="continuationToken">Continuation token for next page</param> /// <returns>One page of results, with meta data</returns> public async Task <DocDbRestQueryResult> QueryCollectionAsync( string queryString, Dictionary <string, object> queryParams, int pageSize = -1, string continuationToken = null) { if (string.IsNullOrWhiteSpace(queryString)) { throw new ArgumentNullException(nameof(queryString)); } var query = this.documentDbClient.CreateDocumentQuery <JObject>( UriFactory.CreateDocumentCollectionUri(this.databaseName, this.collectionName), new SqlQuerySpec { QueryText = queryString, Parameters = ToSqlQueryParamtereCollection(queryParams) }, new FeedOptions { MaxItemCount = pageSize, RequestContinuation = continuationToken }) .AsDocumentQuery(); var response = await query.ExecuteNextAsync <JObject>().ConfigureAwait(false); var result = new DocDbRestQueryResult { ResultSet = new JArray(response.ToArray()), TotalResults = response.Count, ContinuationToken = query.HasMoreResults ? response.ResponseContinuation : null }; return(result); }
/// <summary> /// The query document collection async. /// </summary> /// <param name="queryString"> /// The query string. /// </param> /// <param name="queryParams"> /// The query parameters. /// </param> /// <param name="partitionId"> /// The partition id. /// </param> /// <param name="enableCrossPartitionQuery"> /// The enable cross partition query. /// </param> /// <param name="enableScanInQuery"> /// The enable scan in query. /// </param> /// <param name="pageSize"> /// The page size. /// </param> /// <param name="maxDegreeOfParallelism"> /// The max degree of parallelism. /// </param> /// <param name="continuationToken"> /// The continuation token. /// </param> /// <returns> /// The <see cref="Task"/>. /// Document DB query result /// </returns> /// <exception cref="ArgumentNullException"> /// Null argument /// </exception> private async Task <DocDbRestQueryResult> QueryDocumentCollectionAsync( string queryString, Dictionary <string, object> queryParams, string partitionId, bool enableCrossPartitionQuery, bool enableScanInQuery, int pageSize, int maxDegreeOfParallelism, string continuationToken) { if (string.IsNullOrWhiteSpace(queryString)) { throw new ArgumentNullException(nameof(queryString)); } var feedOptions = new FeedOptions { PartitionKey = new PartitionKey(partitionId), EnableCrossPartitionQuery = enableCrossPartitionQuery, EnableScanInQuery = enableScanInQuery, MaxItemCount = pageSize, RequestContinuation = continuationToken, MaxDegreeOfParallelism = maxDegreeOfParallelism }; var query = this.documentDbClient.CreateDocumentQuery <JObject>( UriFactory.CreateDocumentCollectionUri(this.databaseName, this.collectionName), new SqlQuerySpec { QueryText = queryString, Parameters = ToSqlQueryParamtereCollection(queryParams) }, feedOptions) .AsDocumentQuery(); var response = await query.ExecuteNextAsync <JObject>().ConfigureAwait(false); var result = new DocDbRestQueryResult { ResultSet = new JArray(response.ToArray()), TotalResults = response.Count, ContinuationToken = query.HasMoreResults ? response.ResponseContinuation : null }; return(result); }