开发手册 欢迎您!
软件开发者资料库

DocumentDB - 创建集合

DocumentDB创建集合 - 从简介,优势,环境设置,创建,连接帐户,创建,列表,删除数据库,创建,删除集合,插入,查询,更新,删除文档,数据建模,数据类型,限制,排序开始学习DocumentDB ,索引记录,地理空间数据,分区,数据迁移,访问控制,可视化数据。

在本章中,我们将学习如何创建一个集合.它类似于创建数据库.您可以使用.Net SDK从门户网站或代码创建集合.

步骤1 : 转到Azure门户上的主仪表板.

创建集合

第2步 : 从数据库列表中选择myfirstdb.

myfirstdb

步骤3 : 单击"添加集合"选项并指定集合的ID.选择不同选项的定价层.

添加集合

第4步 : 让我们选择S1 Standard并单击Select → 确定按钮.

选择S1标准

正如您所见,MyCollection添加到myfirstdb.

您还可以使用.Net SDK从代码创建集合.让我们看一下从代码中添加集合的以下步骤.

第1步 : 在Visual Studio中打开控制台应用程序.

步骤2 : 要创建集合,首先通过CreateDocumentClient任务中的ID检索myfirstdb数据库.

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();      await CreateCollection(client, "MyCollection1");      await CreateCollection(client, "MyCollection2", "S2");    }}

以下是CreateCollection任务的实现.

private async static Task CreateCollection(DocumentClient client, string collectionId,   string offerType = "S1") {   Console.WriteLine();   Console.WriteLine("**** Create Collection {0} in {1} ****", collectionId, database.Id);   var collectionDefinition = new DocumentCollection { Id = collectionId };   var options = new RequestOptions { OfferType = offerType };   var result = await client.CreateDocumentCollectionAsync(database.SelfLink,      collectionDefinition, options);   var collection = result.Resource;   Console.WriteLine("Created new collection");   ViewCollection(collection);}

我们创建一个新的DocumentCollection对象,它定义了具有CreateDocumentCollectionAsync方法所需Id的新集合,该方法也接受我们的options参数我在这里用来设置新集合的性能层,我们称之为offerType.

这默认为S1,因为我们没有传入offerType,对于MyCollection1,所以这将是一个S1集合,对于MyCollection2我们已经通过了S2,这使得它成为S2,如上所示.

以下是ViewCollection方法的实现.

private static void ViewCollection(DocumentCollection collection) {   Console.WriteLine("Collection ID: {0} ", collection.Id);    Console.WriteLine("Resource ID: {0} ", collection.ResourceId);    Console.WriteLine("Self Link: {0} ", collection.SelfLink);    Console.WriteLine("Documents Link: {0} ", collection.DocumentsLink);    Console.WriteLine("UDFs Link: {0} ", collection.UserDefinedFunctionsLink);    Console.WriteLine(" StoredProcs Link: {0} ", collection.StoredProceduresLink);    Console.WriteLine("Triggers Link: {0} ", collection.TriggersLink);    Console.WriteLine("Timestamp: {0} ", collection.Timestamp);}

以下是集合的program.cs文件的完整实现.

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using Microsoft.Azure.Documents;using Microsoft.Azure.Documents.Client;using Microsoft.Azure.Documents.Linq;using Newtonsoft.Json;namespace DocumentDBDemo {   class Program {      private const string EndpointUrl = "https://azuredocdbdemo.documents.azure.com:443/";      private const string AuthorizationKey = "BBhjI0gxdVPdDbS4diTjdloJq7Fp4L5RO/         StTt6UtEufDM78qM2CtBZWbyVwFPSJIm8AcfDu2O+AfV T+TYUnBQ==";      private static Database database;      static void Main(string[] args) {         try {            CreateDocumentClient().Wait();         } catch (Exception e) {            Exception baseException = e.GetBaseException();            Console.WriteLine("Error: {0}, Message: {1}", e.Message, baseException.Message);         }         Console.ReadKey();      }      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();            await CreateCollection(client, "MyCollection1");            await CreateCollection(client, "MyCollection2", "S2");            //await CreateDatabase(client);            //GetDatabases(client);            //await DeleteDatabase(client);            //GetDatabases(client);         }      }      private async static Task CreateCollection(DocumentClient client,         string collectionId, string offerType = "S1") {         Console.WriteLine();         Console.WriteLine("**** Create Collection {0} in {1} ****", collectionId,            database.Id);         var collectionDefinition = new DocumentCollection { Id = collectionId };         var options = new RequestOptions { OfferType = offerType };         var result = await client.CreateDocumentCollectionAsync(database.SelfLink,            collectionDefinition, options);         var collection = result.Resource;         Console.WriteLine("Created new collection");         ViewCollection(collection);      }      private static void ViewCollection(DocumentCollection collection) {         Console.WriteLine("Collection ID: {0} ", collection.Id);         Console.WriteLine("Resource ID: {0} ", collection.ResourceId);         Console.WriteLine("Self Link: {0} ", collection.SelfLink);         Console.WriteLine("Documents Link: {0} ", collection.DocumentsLink);         Console.WriteLine("UDFs Link: {0} ", collection.UserDefinedFunctionsLink);         Console.WriteLine("StoredProcs Link: {0} ", collection.StoredProceduresLink);         Console.WriteLine("Triggers Link: {0} ", collection.TriggersLink);         Console.WriteLine("Timestamp: {0} ", collection.Timestamp);      }   }}

编译并执行上述代码时,您将收到以下输出包含与集合相关的所有信息.

**** Create Collection MyCollection1 in myfirstdb **** Created new collection   Collection ID: MyCollection1      Resource ID: Ic8LAPPvnAA=         Self Link: dbs/Ic8LAA==/colls/Ic8LAPPvnAA=/   Documents Link: dbs/Ic8LAA==/colls/Ic8LAPPvnAA=/docs/         UDFs Link: dbs/Ic8LAA==/colls/Ic8LAPPvnAA=/udfs/   StoredProcs Link: dbs/Ic8LAA==/colls/Ic8LAPPvnAA=/sprocs/      Triggers Link: dbs/Ic8LAA==/colls/Ic8LAPPvnAA=/triggers/         Timestamp: 12/10/2015 4:55:36 PM  **** Create Collection MyCollection2 in myfirstdb ****Created new collection   Collection ID: MyCollection2      Resource ID: Ic8LAKGHDwE=         Self Link: dbs/Ic8LAA==/colls/Ic8LAKGHDwE=/   Documents Link: dbs/Ic8LAA==/colls/Ic8LAKGHDwE=/docs/         UDFs Link: dbs/Ic8LAA==/colls/Ic8LAKGHDwE=/udfs/   StoredProcs Link: dbs/Ic8LAA==/colls/Ic8LAKGHDwE=/sprocs/      Triggers Link: dbs/Ic8LAA==/colls/Ic8LAKGHDwE=/triggers/         Timestamp: 12/10/2015 4:55:38 PM