DocumentDB - แทรกเอกสาร
ในบทนี้เราจะได้ทำงานกับเอกสารจริงในคอลเล็กชัน คุณสามารถสร้างเอกสารโดยใช้พอร์ทัล Azure หรือ. Net SDK
การสร้างเอกสารด้วย Azure Portal
มาดูขั้นตอนต่อไปนี้เพื่อเพิ่มเอกสารลงในคอลเลกชันของคุณ
Step 1 - เพิ่มคอลเลกชั่นใหม่ตระกูลระดับราคา S1 ใน myfirstdb
Step 2 - เลือกคอลเลคชัน Families และคลิกที่ตัวเลือกสร้างเอกสารเพื่อเปิดใบมีดเอกสารใหม่
นี่เป็นเพียงโปรแกรมแก้ไขข้อความธรรมดา ๆ ที่ให้คุณพิมพ์ JSON สำหรับเอกสารใหม่
Step 3 - เนื่องจากนี่คือการป้อนข้อมูลดิบให้ป้อนเอกสารแรกของเรา
{
"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
}
เมื่อคุณป้อนเอกสารด้านบนคุณจะเห็นหน้าจอต่อไปนี้
โปรดสังเกตว่าเราได้ระบุรหัสสำหรับเอกสาร จำเป็นต้องใช้ค่า id เสมอและต้องไม่ซ้ำกันในเอกสารอื่น ๆ ทั้งหมดในคอลเล็กชันเดียวกัน เมื่อคุณปล่อยทิ้งไว้ DocumentDB จะสร้างขึ้นมาให้คุณโดยอัตโนมัติโดยใช้ GUID หรือ Global Unique Identifier
id เป็นสตริงเสมอและต้องไม่เป็นตัวเลขวันที่บูลีนหรือวัตถุอื่นและต้องมีความยาวไม่เกิน 255 อักขระ
นอกจากนี้โปรดสังเกตโครงสร้างลำดับชั้นของเอกสารซึ่งมีคุณสมบัติระดับบนสุดบางอย่างเช่น id ที่ต้องการเช่นเดียวกับ lastName และ isRegistered แต่ยังมีคุณสมบัติที่ซ้อนกัน
ตัวอย่างเช่นคุณสมบัติ parent ถูกจัดให้เป็นอาร์เรย์ JSON ตามที่แสดงโดยวงเล็บเหลี่ยม นอกจากนี้เรายังมีอาร์เรย์อื่นสำหรับเด็กแม้ว่าจะมีลูกเดียวในอาร์เรย์ในตัวอย่างนี้
Step 4 - คลิกปุ่ม 'บันทึก' เพื่อบันทึกเอกสารและเราได้สร้างเอกสารแรกของเรา
ดังที่คุณเห็นว่าการจัดรูปแบบสวย ๆ ถูกนำไปใช้กับ JSON ของเราซึ่งจะแบ่งทุกคุณสมบัติในบรรทัดของตัวเองโดยเยื้องด้วยช่องว่างเพื่อแสดงระดับการซ้อนกันของแต่ละคุณสมบัติ
พอร์ทัลมี Document Explorer ดังนั้นให้ใช้ตอนนี้เพื่อดึงเอกสารที่เราเพิ่งสร้างขึ้น
Step 5- เลือกฐานข้อมูลและคอลเล็กชันใด ๆ ภายในฐานข้อมูลเพื่อดูเอกสารในคอลเล็กชันนั้น ขณะนี้เรามีฐานข้อมูลเพียงฐานข้อมูลชื่อ myfirstdb โดยมีคอลเล็กชันหนึ่งชื่อ Families ซึ่งทั้งสองได้รับการเลือกไว้ล่วงหน้าที่นี่ในเมนูแบบเลื่อนลง
ตามค่าเริ่มต้น Document Explorer จะแสดงรายการเอกสารที่ไม่มีการกรองภายในคอลเลกชัน แต่คุณยังสามารถค้นหาเอกสารใด ๆ โดยใช้ ID หรือเอกสารหลาย ๆ ชุดโดยใช้การค้นหาสัญลักษณ์แทนของ ID บางส่วน
เรามีเอกสารเพียงฉบับเดียวในคอลเล็กชันของเราและเราเห็น ID บนหน้าจอต่อไปนี้ AndersonFamily
Step 6 - คลิกที่ ID เพื่อดูเอกสาร
การสร้างเอกสารด้วย. NET SDK
ดังที่คุณทราบว่าเอกสารเป็นเพียงทรัพยากรอีกประเภทหนึ่งและคุณคุ้นเคยกับวิธีจัดการทรัพยากรโดยใช้ SDK แล้ว
ความแตกต่างที่สำคัญอย่างหนึ่งระหว่างเอกสารและทรัพยากรอื่น ๆ คือแน่นอนว่าเอกสารเหล่านี้ไม่มีสคีมา
จึงมีตัวเลือกมากมาย โดยปกติคุณสามารถทำงานกราฟออบเจ็กต์ JSON หรือแม้กระทั่งสตริงดิบของข้อความ JSON แต่คุณยังสามารถใช้วัตถุแบบไดนามิกที่ช่วยให้คุณเชื่อมโยงกับคุณสมบัติในรันไทม์ได้โดยไม่ต้องกำหนดคลาสในเวลาคอมไพล์
คุณยังสามารถทำงานกับออบเจ็กต์ C # จริงหรือเอนทิตีตามที่เรียกซึ่งอาจเป็นคลาสโดเมนธุรกิจของคุณ
มาเริ่มสร้างเอกสารโดยใช้. Net SDK ต่อไปนี้เป็นขั้นตอน
Step 1 - สร้างอินสแตนซ์ DocumentClient จากนั้นเราจะค้นหาฐานข้อมูล myfirstdb จากนั้นค้นหาคอลเล็กชัน MyCollection ซึ่งเราเก็บไว้ในคอลเล็กชันตัวแปรส่วนตัวนี้เพื่อให้สามารถเข้าถึงได้ทั่วทั้งคลาส
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 - สร้างเอกสารบางอย่างในงาน 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();
}
เอกสารแรกจะถูกสร้างขึ้นจากวัตถุไดนามิกนี้ สิ่งนี้อาจดูเหมือน JSON แต่แน่นอนว่าไม่ใช่ นี่คือรหัส C # และเรากำลังสร้างออบเจ็กต์. NET จริง แต่ไม่มีนิยามคลาส แต่คุณสมบัติจะถูกอนุมานจากวิธีเริ่มต้นวัตถุ
โปรดสังเกตว่าเราไม่ได้ให้คุณสมบัติ Id สำหรับเอกสารนี้
ตอนนี้เรามาดู CreateDocument กัน ดูเหมือนรูปแบบเดียวกับที่เราเห็นในการสร้างฐานข้อมูลและคอลเล็กชัน
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- คราวนี้เราเรียก CreateDocumentAsync ระบุ SelfLink ของคอลเล็กชันที่เราต้องการเพิ่มเอกสาร เราได้รับการตอบกลับพร้อมคุณสมบัติทรัพยากรที่ในกรณีนี้แสดงถึงเอกสารใหม่ที่มีคุณสมบัติที่ระบบสร้างขึ้น
อ็อบเจ็กต์ Document เป็นคลาสที่กำหนดไว้ใน SDK ซึ่งสืบทอดมาจากรีซอร์สดังนั้นจึงมีคุณสมบัติของรีซอร์สทั่วไปทั้งหมด แต่ยังรวมถึงคุณสมบัติไดนามิกที่กำหนดเอกสารที่ไม่มีสคีมาเอง
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();
}
เมื่อโค้ดด้านบนถูกคอมไพล์และดำเนินการคุณจะได้รับผลลัพธ์ต่อไปนี้
**** 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
อย่างที่คุณเห็นเรายังไม่ได้ให้ ID แต่ DocumentDB สร้างรหัสนี้ให้เราสำหรับเอกสารใหม่