DocumentDB - Membatasi Catatan

Microsoft baru-baru ini menambahkan sejumlah perbaikan tentang bagaimana Anda dapat melakukan kueri Azure DocumentDB, seperti kata kunci TOP ke tata bahasa SQL, yang membuat kueri berjalan lebih cepat dan mengonsumsi lebih sedikit sumber daya, meningkatkan batas untuk operator kueri, dan menambahkan dukungan untuk operator LINQ tambahan di SDK .NET.

Mari kita lihat contoh sederhana di mana kita hanya akan mengambil dua record pertama. Jika Anda memiliki sejumlah record dan Anda ingin mengambil hanya beberapa, maka Anda dapat menggunakan kata kunci Top. Dalam contoh ini, kami memiliki banyak catatan tentang gempa bumi.

Sekarang kami hanya ingin menampilkan dua rekaman pertama

Step 1 - Buka penjelajah kueri dan jalankan kueri ini.

SELECT * FROM c 
WHERE c.magnitude > 2.5

Anda akan melihat bahwa itu telah mengambil empat rekaman karena kami belum menentukan kata kunci TOP.

Step 2- Sekarang gunakan kata kunci TOP dengan kueri yang sama. Di sini kami telah menentukan kata kunci TOP dan '2' berarti kami hanya menginginkan dua rekaman.

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

Step 3 - Sekarang jalankan query ini dan Anda akan melihat bahwa hanya dua record yang diambil.

Demikian pula, Anda dapat menggunakan kata kunci TOP dalam kode menggunakan .Net SDK. Berikut implementasinya.

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

Berikut adalah tugas CreateDocumentClient yang membuat instance dari DocumentClient dan database gempa.

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

Ketika kode di atas dikompilasi dan dijalankan, Anda akan melihat bahwa hanya tiga record yang diambil.

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