我是第一次使用 CosmosDB,并且根据此文档,我尝试通过 id 读取单个文档:
根据此文档,我的容器对象应该有一个ReadItemAsync可以用来查找和读取单个项目的方法。但是,当我将“Microsoft.Azure.Cosmos”nuget 包导入到我的项目并尝试使用此代码片段时,容器上没有ReadItemAsync. 这是我的代码片段:
using Microsoft.Azure.Cosmos;
...
var databaseId = "{databaseId}";
var containerId = "{containerId}";
var client = new CosmosClient(model.IndexDatabaseUri, model.IndexDatabasePrimaryKey);
var database = client.GetDatabase(databaseId);
var container = database.GetContainer(containerId);
var call = container... // NO ReadItemAsync HERE
Run Code Online (Sandbox Code Playgroud)
我确实在容器上看到了这些功能:
GetItemLinqQueryable
GetItemQueryIterator
GetItemQueryStreamIterator
Run Code Online (Sandbox Code Playgroud)
从它的外观来看,我可能可以使用自定义SELECT语句创建一个查询迭代器,并检索迭代器中的第一项。但这对于我想做的事情来说似乎有点过分了。在这种情况下我总是只想要一个项目。为什么这里没有ReadItemAsync方法,而文档中显示应该有一个方法?而且,如果“迭代器”是新的首选方法,那么使用 QueryIterator 与检索单个文档相比是否有任何性能考虑因素?该函数将在一天内运行数百万次。
ps - 我正在使用“Microsoft.Azure.Cosmos”nuget 包 v3.9.1
如果您正在阅读 1 项并且知道id分区键,那么这是读取信息最快、最便宜(以 RU/s 计算)的方式。WHERE使用带有 the 的子句进行查询id会更昂贵。
我刚刚使用 3.9.1 创建了一个 NET Core 控制台应用程序,该方法就在那里,并且您指向的文档会根据 Nuget 包中的 DLL 自动生成。
| 归档时间: |
|
| 查看次数: |
8689 次 |
| 最近记录: |