Banco de Dados de Documentos - Limitando Registros
A Microsoft adicionou recentemente uma série de melhorias sobre como você pode consultar o Azure DocumentDB, como a palavra-chave TOP para gramática SQL, o que tornou as consultas mais rápidas e consumiram menos recursos, aumentou os limites para operadores de consulta e adicionou suporte para operadores LINQ adicionais em o .NET SDK.
Vamos dar uma olhada em um exemplo simples no qual recuperaremos apenas os dois primeiros registros. Se você tiver vários registros e quiser recuperar apenas alguns deles, poderá usar a palavra-chave Top. Neste exemplo, temos muitos registros de terremotos.
Agora queremos mostrar os primeiros dois registros apenas
Step 1 - Vá para o explorador de consultas e execute esta consulta.
SELECT * FROM c
WHERE c.magnitude > 2.5
Você verá que recuperou quatro registros porque ainda não especificamos a palavra-chave TOP.
Step 2- Agora use a palavra-chave TOP com a mesma consulta. Aqui especificamos a palavra-chave TOP e '2' significa que queremos apenas dois registros.
SELECT TOP 2 * FROM c
WHERE c.magnitude > 2.5
Step 3 - Agora execute esta consulta e você verá que apenas dois registros são recuperados.
Da mesma forma, você pode usar a palavra-chave TOP no código usando .Net SDK. A seguir está a implementação.
private async static Task QueryDocumentsWithPaging(DocumentClient client) {
Console.WriteLine();
Console.WriteLine("**** Query Documents (paged results) ****");
Console.WriteLine();
Console.WriteLine("Quering for all documents");
var sql = "SELECT TOP 3 * FROM c";
var query = client
.CreateDocumentQuery(collection.SelfLink, sql)
.AsDocumentQuery();
while (query.HasMoreResults) {
var documents = await query.ExecuteNextAsync();
foreach (var document in documents) {
Console.WriteLine(" PublicId: {0}; Magnitude: {1};", document.publicid,
document.magnitude);
}
}
Console.WriteLine();
}
A seguir está a tarefa CreateDocumentClient na qual são instanciados o banco de dados DocumentClient e terremoto.
private static async Task CreateDocumentClient() {
// Create a new instance of the DocumentClient
using (var client = new DocumentClient(new Uri(EndpointUrl), AuthorizationKey)) {
database = client.CreateDatabaseQuery("SELECT * FROM c WHERE c.id =
'earthquake'").AsEnumerable().First();
collection = client.CreateDocumentCollectionQuery(database.CollectionsLink,
"SELECT * FROM c WHERE c.id = 'earthquakedata'").AsEnumerable().First();
await QueryDocumentsWithPaging(client);
}
}
Quando o código acima for compilado e executado, você verá que apenas três registros são recuperados.
**** Query Documents (paged results) ****
Quering for all documents
PublicId: 2015p947400; Magnitude: 2.515176918;
PublicId: 2015p947373; Magnitude: 1.506774108;
PublicId: 2015p947329; Magnitude: 1.593394461;