Azure Cosmos DB:DocumentDB API 的 .NET 示例

对 Azure Cosmos DB 资源执行 CRUD 操作和其他常见操作的最新示例解决方案包含在 azure-documentdb-dotnet GitHub 存储库中。 本文将提供:

  • 指向每个示例 C# 项目文件中各项任务的链接。
  • 指向相关的 API 参考内容的链接。

先决条件

Note

如果没有 Azure 订阅,可在开始前创建一个试用帐户

或者,可以将 Azure Cosmos DB 模拟器用于本教程,该模拟器的 URI 为 https://localhost:8081,密钥为:

C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==

也需要 Microsoft.Azure.DocumentDB NuGet 程序包

Note

每个示例都是独立的,自行对自身进行设置并在完成后自行进行清理。 同样地,这些示例对 CreateDocumentCollectionAsync() 发出多个调用。 每当执行此操作时,即会根据所创建的集合的性能层,对订阅收取使用 1 小时的费用。

数据库示例

DatabaseManagement 项目示例的 RunDatabaseDemo 方法演示如何执行以下任务。

任务 API 参考
创建数据库 DocumentClient.CreateDatabaseAsync
Query a database DocumentQueryable.CreateDatabaseQuery
按 ID 读取数据库 DocumentClient.ReadDatabaseAsync
Read all the databases DocumentClient.ReadDatabaseFeedAsync
删除数据库 DocumentClient.DeleteDatabaseAsync

集合示例

CollectionManagement 项目示例的 RunCollectionDemo 方法演示如何执行以下任务。

任务 API 参考
创建集合 DocumentClient.CreateDocumentCollectionAsync
Get configured performance of a collection DocumentQueryable.CreateOfferQuery
Change configured performance of a collection DocumentClient.ReplaceOfferAsync
按 ID 获取集合 DocumentClient.ReadDocumentCollectionAsync
Read all the collections in a database DocumentClient.ReadDocumentCollectionFeedAsync
删除集合 DocumentClient.DeleteDocumentCollectionAsync

文档示例

DocumentManagement 项目示例的 RunDocumentsDemo 方法演示如何执行以下任务。

任务 API 参考
创建文档 DocumentClient.CreateDocumentAsync
按 ID 读取文档 DocumentClient.ReadDocumentAsync
Read all the documents in a collection DocumentClient.ReadDocumentFeedAsync
查询文档 DocumentClient.CreateDocumentQuery
替换文档 DocumentClient.ReplaceDocumentAsync
更新插入文档 DocumentClient.UpsertDocumentAsync
删除文档 DocumentClient.DeleteDocumentAsync
使用 .NET 动态对象 DocumentClient.CreateDocumentAsync
DocumentClient.ReadDocumentAsync
DocumentClient.ReplaceDocumentAsync
使用条件 ETag 检查替换文档 DocumentClient.AccessCondition
Documents.Client.AccessConditionType
仅当文档已更改时读取文档 DocumentClient.AccessCondition
Documents.Client.AccessConditionType

索引示例

IndexManagement 项目示例的 RunIndexDemo 方法演示如何执行以下任务。

任务 API 参考
从索引中排除文档 IndexingDirective.Exclude
使用手动(而非自动)索引 IndexingPolicy.Automatic
使用延迟(而非一致)索引 IndexingMode.Lazy
从索引中排除指定的文档路径 IndexingPolicy.ExcludedPaths
对哈希索引路径强制执行范围扫描操作 FeedOptions.EnableScanInQuery
对字符串使用范围索引 IndexingPolicy.IncludedPaths
RangeIndex
执行索引转换 ReplaceDocumentCollectionAsync

有关索引的详细信息,请参阅 Azure Cosmos DB 索引策略

地理空间示例

地理空间示例文件 azure-documentdb-dotnet/samples/code-samples/Geospatial/Program.cs演示如何执行以下任务。

任务 API 参考
对新集合启用地理空间索引 IndexingPolicy
IndexKind.Spatial
DataType.Point
使用 GeoJSON 点插入文档 DocumentClient.CreateDocumentAsync
DataType.Point
查找指定距离内的点 ST_DISTANCE
[GeometryOperationExtensions.Distance](https://msdn.microsoft.com/library/azure/microsoft.azure.documents.spatial.geometryoperationextensions.distance.aspx#M:Microsoft.Azure.Documents.Spatial.GeometryOperationExtensions.Distance(Microsoft.Azure.Documents.Spatial.Geometry,Microsoft.Azure.Documents.Spatial.Geometry)
查找多边形内的点 ST_WITHIN
[GeometryOperationExtensions.Within](https://msdn.microsoft.com/library/azure/microsoft.azure.documents.spatial.geometryoperationextensions.within.aspx#M:Microsoft.Azure.Documents.Spatial.GeometryOperationExtensions.Within(Microsoft.Azure.Documents.Spatial.Geometry,Microsoft.Azure.Documents.Spatial.Geometry) 和
多边形
对现有集合启用地理空间索引 DocumentClient.ReplaceDocumentCollectionAsync
DocumentCollection.IndexingPolicy
验证点和多边形数据 ST_ISVALID
ST_ISVALIDDETAILED
GeometryOperationExtensions.IsValid
GeometryOperationExtensions.IsValidDetailed

有关使用地理空间数据的详细信息,请参阅使用 Azure Cosmos DB 中的地理空间数据

查询示例

查询文档文件 azure-documentdb-dotnet/samples/code-samples/Queries/Program.cs演示如何通过 SQL 查询语法以及使用查询和 Lambda 的 LINQ 提供程序执行以下各项任务。

任务 API 参考
查询所有文档 DocumentQueryable.CreateDocumentQuery
使用 == 查询等式 DocumentQueryable.CreateDocumentQuery
使用 != 和 NOT 查询不等式 DocumentQueryable.CreateDocumentQuery
使用 >、<、>=、<= 等范围运算符进行查询 DocumentQueryable.CreateDocumentQuery
使用范围运算符对字符串进行查询 DocumentQueryable.CreateDocumentQuery
使用 Order By 进行查询 DocumentQueryable.CreateDocumentQuery
使用聚合函数进行查询 DocumentQueryable.CreateDocumentQuery
使用子文档 DocumentQueryable.CreateDocumentQuery
使用文档内联接进行查询 DocumentQueryable.CreateDocumentQuery
使用字符串、数学和数组运算符进行查询 DocumentQueryable.CreateDocumentQuery
通过使用 SqlQuerySpec 的参数化 SQL 进行查询 DocumentQueryable.CreateDocumentQuery
SqlQuerySpec
使用显式分页进行查询 DocumentQueryable.CreateDocumentQuery
并行查询已分区集合 DocumentQueryable.CreateDocumentQuery
使用 Order by 针对已分区集合进行查询 DocumentQueryable.CreateDocumentQuery

有关编写查询的详细信息,请参阅 Azure Cosmos DB 中的 SQL 查询

更改源示例

更改源示例,azure-documentdb-dotnet/samples/code-samples/ChangeFeed/Program.cs 演示如何执行以下任务。

任务 API 参考
读取更改源 DocumentClient.CreateDocumentChangeFeedQuery
读取分区键范围 DocumentClient.ReadPartitionKeyRangeFeedAsync

更改源处理器示例:更改源迁移工具演示如何使用更改源处理器库将数据复制到另一个 Cosmos DB 集合。

服务器端编程示例

服务器端编程文件 azure-documentdb-dotnet/samples/code-samples/ServerSideScripts/Program.cs演示如何执行以下任务。

任务 API 参考
创建存储过程 DocumentClient.CreateStoredProcedureAsync
执行存储过程 DocumentClient.ExecuteStoredProcedureAsync
读取存储过程的文档源 DocumentClient.ReadDocumentFeedAsync
使用 Order by 创建存储过程 DocumentClient.CreateStoredProcedureAsync
创建预触发器 DocumentClient.CreateTriggerAsync
创建后触发器 DocumentClient.CreateTriggerAsync
创建用户定义函数 (UDF) DocumentClient.CreateUserDefinedFunctionAsync

有关服务器端编程的详细信息,请参阅 Azure Cosmos DB 服务器端编程:存储过程、数据库触发器和 UDF

用户管理示例

用户管理文件 azure-documentdb-dotnet/samples/code-samples/UserManagement/Program.cs演示如何执行以下任务。

任务 API 参考
创建用户 DocumentClient.CreateUserAsync
对集合或文档设置权限 DocumentClient.CreatePermissionAsync
获取用户权限列表 DocumentClient.ReadUserAsync
DocumentClient.ReadPermissionFeedAsync