DocumentDB - Sisipkan Dokumen

Dalam bab ini, kita akan mulai bekerja dengan dokumen aktual dalam sebuah koleksi. Anda dapat membuat dokumen menggunakan portal Azure atau .Net SDK.

Membuat Dokumen dengan Azure Portal

Mari kita lihat langkah-langkah berikut untuk menambahkan dokumen ke koleksi Anda.

Step 1 - Tambahkan koleksi baru Keluarga tingkat harga S1 di myfirstdb.

Step 2 - Pilih koleksi Keluarga dan klik opsi Buat Dokumen untuk membuka bilah Dokumen Baru.

Ini hanyalah editor teks sederhana yang memungkinkan Anda mengetik JSON apa pun untuk dokumen baru.

Step 3 - Karena ini adalah entri data mentah, mari kita masukkan dokumen pertama kita.

{
   "id": "AndersenFamily", 
   "lastName": "Andersen", 
	
   "parents": [ 
      { "firstName": "Thomas", "relationship": "father" }, 
      { "firstName": "Mary Kay", "relationship": "mother" } 
   ], 
	
   "children": [ 
      { 
         "firstName": "Henriette Thaulow", 
         "gender": "female", 
         "grade": 5, 
         "pets": [ { "givenName": "Fluffy", "type": "Rabbit" } ] 
      } 
   ], 
	
   "location": { "state": "WA", "county": "King", "city": "Seattle"}, 
   "isRegistered": true
}

Saat Anda memasukkan dokumen di atas, Anda akan melihat layar berikut.

Perhatikan bahwa kami telah memberikan id untuk dokumen tersebut. Nilai id selalu diperlukan, dan harus unik di semua dokumen lain dalam koleksi yang sama. Ketika Anda membiarkannya, maka DocumentDB akan secara otomatis menghasilkan satu untuk Anda menggunakan GUID atau Pengenal Unik Secara Global.

Id selalu berupa string dan tidak boleh berupa angka, tanggal, Boolean, atau objek lain, dan tidak boleh lebih dari 255 karakter.

Perhatikan juga struktur hierarki dokumen yang memiliki beberapa properti level teratas seperti id yang diperlukan, serta lastName dan isRegistered, tetapi juga memiliki properti bertingkat.

Misalnya, properti orang tua diberikan sebagai larik JSON seperti yang dilambangkan dengan tanda kurung siku. Kami juga memiliki array lain untuk anak-anak, meskipun hanya ada satu anak dalam array dalam contoh ini.

Step 4 - Klik tombol 'Simpan' untuk menyimpan dokumen dan kami telah membuat dokumen pertama kami.

Seperti yang Anda lihat, pemformatan cantik telah diterapkan pada JSON kami, yang memecah setiap properti pada barisnya sendiri yang diberi jarak untuk menyampaikan level bersarang dari setiap properti.

Portal menyertakan Document Explorer, jadi mari gunakan itu sekarang untuk mengambil dokumen yang baru kita buat.

Step 5- Pilih database dan koleksi apa pun dalam database untuk melihat dokumen dalam koleksi itu. Saat ini kami hanya memiliki satu basis data bernama myfirstdb dengan satu koleksi bernama Keluarga, keduanya telah dipilih sebelumnya di sini di menu tarik-turun.

Secara default, Penjelajah Dokumen menampilkan daftar dokumen yang tidak difilter dalam koleksi, tetapi Anda juga dapat mencari dokumen tertentu menurut ID atau beberapa dokumen berdasarkan pencarian karakter pengganti dari sebagian ID.

Kami hanya memiliki satu dokumen dalam koleksi kami sejauh ini, dan kami melihat ID-nya di layar berikut, AndersonFamily.

Step 6 - Klik ID untuk melihat dokumen.

Membuat Dokumen dengan .NET SDK

Seperti yang Anda ketahui bahwa dokumen hanyalah jenis sumber daya lain dan Anda sudah terbiasa dengan cara menangani sumber daya menggunakan SDK.

  • Satu perbedaan besar antara dokumen dan sumber daya lainnya adalah, tentu saja, mereka bebas skema.

  • Jadi ada banyak sekali pilihan. Biasanya, Anda hanya dapat mengerjakan grafik objek JSON atau bahkan string mentah teks JSON, tetapi Anda juga dapat menggunakan objek dinamis yang memungkinkan Anda mengikat ke properti pada waktu proses tanpa menentukan kelas pada waktu kompilasi.

  • Anda juga dapat bekerja dengan objek C # nyata, atau Entitas sebagaimana namanya, yang mungkin merupakan kelas domain bisnis Anda.

Mari mulai membuat dokumen menggunakan .Net SDK. Berikut langkah-langkahnya.

Step 1 - Instantiate DocumentClient kemudian kita akan melakukan kueri untuk database myfirstdb dan kemudian melakukan kueri untuk koleksi MyCollection, yang kita simpan dalam koleksi variabel pribadi ini sehingga dapat diakses di seluruh kelas.

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 =
         'myfirstdb'").AsEnumerable().First(); 
			
      collection = client.CreateDocumentCollectionQuery(database.CollectionsLink,
         "SELECT * FROM c WHERE c.id = 'MyCollection'").AsEnumerable().First();  
			
      await CreateDocuments(client); 
   } 
}

Step 2 - Buat beberapa dokumen dalam tugas CreateDocuments.

private async static Task CreateDocuments(DocumentClient client) {
   Console.WriteLine(); 
   Console.WriteLine("**** Create Documents ****"); 
   Console.WriteLine();
	
   dynamic document1Definition = new {
      name = "New Customer 1", address = new {
         addressType = "Main Office", 
         addressLine1 = "123 Main Street", 
         location = new {
            city = "Brooklyn", stateProvinceName = "New York" 
         }, postalCode = "11229", countryRegionName = "United States"
      }, 
   };
	
   Document document1 = await CreateDocument(client, document1Definition); 
   Console.WriteLine("Created document {0} from dynamic object", document1.Id); 
   Console.WriteLine(); 
}

Dokumen pertama akan dibuat dari objek dinamis ini. Ini mungkin terlihat seperti JSON, tetapi tentu saja tidak. Ini adalah kode C # dan kami membuat objek NET nyata, tetapi tidak ada definisi kelas. Sebaliknya, properti disimpulkan dari cara objek diinisialisasi.

Perhatikan bahwa kami belum memberikan properti Id untuk dokumen ini.

Sekarang mari kita lihat CreateDocument. Sepertinya pola yang sama yang kita lihat untuk membuat database dan koleksi.

private async static Task<Document> CreateDocument(DocumentClient client,
   object documentObject) {
	
   var result = await client.CreateDocumentAsync(collection.SelfLink, documentObject); 
   var document = result.Resource;
	
   Console.WriteLine("Created new document: {0}\r\n{1}", document.Id, document); 
   return result; 
}

Step 3- Kali ini kita memanggil CreateDocumentAsync yang menetapkan Tautan Mandiri dari koleksi yang ingin kita tambahkan dokumennya. Kami mendapatkan kembali respons dengan properti resource yang, dalam hal ini, mewakili dokumen baru dengan properti yang dihasilkan sistem.

Objek Dokumen adalah kelas yang ditentukan dalam SDK yang diwarisi dari sumber daya sehingga memiliki semua properti sumber daya umum, tetapi juga menyertakan properti dinamis yang menentukan dokumen bebas skema itu sendiri.

private async static Task CreateDocuments(DocumentClient client) {
   Console.WriteLine(); 
   Console.WriteLine("**** Create Documents ****"); 
   Console.WriteLine();  
	
   dynamic document1Definition = new {
      name = "New Customer 1", address = new { 
         addressType = "Main Office",
         addressLine1 = "123 Main Street", 
         location = new {
            city = "Brooklyn", stateProvinceName = "New York" 
         }, postalCode = "11229", countryRegionName = "United States" 
      }, 
   };
	
   Document document1 = await CreateDocument(client, document1Definition); 
   Console.WriteLine("Created document {0} from dynamic object", document1.Id); 
   Console.WriteLine();
}

Ketika kode di atas dikompilasi dan dijalankan, Anda akan menerima output berikut.

**** Create Documents ****  
Created new document: 34e9873a-94c8-4720-9146-d63fb7840fad {
   "name": "New Customer 1", 
	
   "address": { 
      "addressType": "Main Office", 
      "addressLine1": "123 Main Street", 
      "location": { 
         "city": "Brooklyn", "stateProvinceName": "New York" 
      }, 
      "postalCode": "11229", "countryRegionName": "United States"
   }, 
	
   "id": "34e9873a-94c8-4720-9146-d63fb7840fad", 
   "_rid": "Ic8LAMEUVgACAAAAAAAAAA==", 
   "_ts": 1449812756, 
   "_self": "dbs/Ic8LAA==/colls/Ic8LAMEUVgA=/docs/Ic8LAMEUVgACAAAAAAAAAA==/", 
   "_etag": "\"00001000-0000-0000-0000-566a63140000\"", 
   "_attachments": "attachments/" 
} 
Created document 34e9873a-94c8-4720-9146-d63fb7840fad from dynamic object

Seperti yang Anda lihat, kami belum memberikan Id, namun DocumentDB membuat ini untuk kami untuk dokumen baru.