
- DocumentDB 教程
- DocumentDB - 首頁
- DocumentDB - 簡介
- DocumentDB - 優勢
- DocumentDB - 環境設定
- DocumentDB - 建立賬戶
- DocumentDB - 連線賬戶
- DocumentDB - 建立資料庫
- DocumentDB - 列出資料庫
- DocumentDB - 刪除資料庫
- DocumentDB - 建立集合
- DocumentDB - 刪除集合
- DocumentDB - 插入文件
- DocumentDB - 查詢文件
- DocumentDB - 更新文件
- DocumentDB - 刪除文件
- DocumentDB - 資料建模
- DocumentDB - 資料型別
- DocumentDB - 限制記錄
- DocumentDB - 對記錄排序
- DocumentDB - 對記錄建立索引
- DocumentDB - 地理空間資料
- DocumentDB - 分割槽
- DocumentDB - 資料遷移
- DocumentDB - 訪問控制
- DocumentDB - 資料視覺化
- DocumentDB 有用資源
- DocumentDB - 快速指南
- DocumentDB - 有用資源
- DocumentDB - 討論
DocumentDB - 插入文件
在本章中,我們將開始在集合中處理實際的文件。您可以使用 Azure 門戶或 .Net SDK 建立文件。
使用 Azure 門戶建立文件
讓我們看一下以下步驟,將文件新增到您的集合。
步驟 1 - 在 myfirstdb 中新增新的 S1 定價層 Families 集合。

步驟 2 - 選擇 Families 集合,然後單擊“建立文件”選項以開啟“新建文件”邊欄。

這只是一個簡單的文字編輯器,允許您為新文件鍵入任何 JSON。

步驟 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。id 值始終是必需的,並且在同一集合中的所有其他文件中都必須唯一。當您省略它時,DocumentDB 將自動使用 GUID 或全域性唯一識別符號為您生成一個。
id 始終是字串,不能是數字、日期、布林值或其他物件,並且不能超過 255 個字元。
還要注意文件的分層結構,它具有一些頂級屬性,例如必需的 id,以及 lastName 和 isRegistered,但它也具有巢狀屬性。
例如,parents 屬性作為 JSON 陣列提供,如方括號所示。我們還有另一個用於 children 的陣列,即使在本例中陣列中只有一個孩子。
步驟 4 - 單擊“儲存”按鈕儲存文件,我們建立了我們的第一個文件。
您可以看到,格式化已應用於我們的 JSON,它將每個屬性分解成它自己的行,並使用空格縮排以傳達每個屬性的巢狀級別。

門戶包含一個文件瀏覽器,因此現在讓我們使用它來檢索我們剛剛建立的文件。

步驟 5 - 選擇資料庫和資料庫中的任何集合以檢視該集合中的文件。我們目前只有一個名為 myfirstdb 的資料庫,其中包含一個名為 Families 的集合,這兩個集合都已在此處的下拉列表中預先選擇。

預設情況下,文件瀏覽器顯示集合中未過濾的文件列表,但您也可以按 ID 搜尋任何特定文件,或基於部分 ID 的萬用字元搜尋搜尋多個文件。
到目前為止,我們的集合中只有一個文件,我們在以下螢幕上看到它的 ID,AndersonFamily。
步驟 6 - 單擊 ID 以檢視文件。

使用 .NET SDK 建立文件
如您所知,文件只是另一種型別的資源,您已經熟悉瞭如何使用 SDK 處理資源。
文件與其他資源之間的一個主要區別是,當然,它們是無模式的。
因此有很多選擇。當然,您可以使用 JSON 物件圖甚至 JSON 文字的原始字串,但您也可以使用動態物件,這些物件允許您在執行時繫結到屬性,而無需在編譯時定義類。
您還可以使用真實的 C# 物件或稱為實體的物件,這些物件可能是您的業務域類。
讓我們開始使用 .Net SDK 建立文件。以下是步驟。
步驟 1 - 例項化 DocumentClient,然後我們將查詢 myfirstdb 資料庫,然後查詢 MyCollection 集合,我們將其儲存在此私有變數 collection 中,以便在整個類中都可以訪問它。
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); } }
步驟 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; }
步驟 3 - 這次我們呼叫 CreateDocumentAsync 並指定我們要將文件新增到其中的集合的 SelfLink。我們得到一個包含 resource 屬性的響應,在這種情況下,它表示具有其系統生成屬性的新文件。
Document 物件是 SDK 中一個定義的類,它繼承自 resource,因此它具有所有通用的資源屬性,但它還包括定義無模式文件本身的動態屬性。
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 為我們為新文件生成了此 Id。