DocumentDB - Limitation des enregistrements

Microsoft a récemment ajouté un certain nombre d'améliorations sur la façon dont vous pouvez interroger Azure DocumentDB, telles que le mot clé TOP vers la grammaire SQL, qui a accéléré l'exécution des requêtes et consommé moins de ressources, augmenté les limites des opérateurs de requête et ajouté la prise en charge des opérateurs LINQ supplémentaires le SDK .NET.

Jetons un coup d'œil à un exemple simple dans lequel nous ne récupérerons que les deux premiers enregistrements. Si vous disposez d'un certain nombre d'enregistrements et que vous souhaitez n'en récupérer que certains, vous pouvez utiliser le mot-clé Top. Dans cet exemple, nous avons de nombreux enregistrements de tremblements de terre.

Maintenant, nous voulons afficher les deux premiers enregistrements uniquement

Step 1 - Accédez à l'explorateur de requêtes et exécutez cette requête.

SELECT * FROM c 
WHERE c.magnitude > 2.5

Vous verrez qu'il a récupéré quatre enregistrements car nous n'avons pas encore spécifié le mot clé TOP.

Step 2- Utilisez maintenant le mot clé TOP avec la même requête. Ici, nous avons spécifié le mot clé TOP et «2» signifie que nous ne voulons que deux enregistrements.

SELECT TOP 2 * FROM c 
WHERE c.magnitude > 2.5

Step 3 - Exécutez maintenant cette requête et vous verrez que seuls deux enregistrements sont récupérés.

De même, vous pouvez utiliser le mot clé TOP dans le code à l'aide du SDK .Net. Voici la mise en œuvre.

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(); 
}

Voici la tâche CreateDocumentClient dans laquelle sont instanciés la base de données DocumentClient et tremblement de terre.

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); 
   } 
}

Lorsque le code ci-dessus est compilé et exécuté, vous verrez que seuls trois enregistrements sont récupérés.

**** Query Documents (paged results) **** 
 
Quering for all documents 
PublicId: 2015p947400; Magnitude: 2.515176918; 
PublicId: 2015p947373; Magnitude: 1.506774108; 
PublicId: 2015p947329; Magnitude: 1.593394461;