c# - 获取 Collection CosmosDb 中的所有文档
问题描述
我想返回 CosmosDb 集合中的所有文档
我的代码如下
client.CreateDocumentQuery(UriFactory.CreateDocumentUri(dbName, colName,"id")).ToList();
它不工作。我可以找到一个特定的文件,但不是全部
谢谢
解决方案
UriFactory.CreateDocumentUri
为文档特定查询创建一个 Uri。
您想要的是集合中的所有文档,因此您需要创建的是创建集合 Uri。你可以通过使用UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName);
但是,请注意您的练习。对于返回大量文档的操作,建议您使用该.AsDocumentQuery()
方法,然后执行ExecuteNextAsync
while query.HasMoreResults
。
.ToList()
您应该这样做,因为如果您只在 上使用 CosmosDB SDK 确实会同步进行线路传输IQueryable
,这将不利于您的应用程序的性能。
这是 MSDN 中的一个示例,说明如何做到这一点。
using (var queryable = client.CreateDocumentQuery<Book>(
collectionLink,
new FeedOptions { MaxItemCount = 10 })
.Where(b => b.Title == "War and Peace")
.AsDocumentQuery())
{
while (queryable.HasMoreResults)
{
foreach(Book b in await queryable.ExecuteNextAsync<Book>())
{
// Iterate through books
}
}
}
推荐阅读
- javascript - 尝试读取图像文件时,我不断从 Firebase 存储中收到 403
- java - 是否应该在 EDT 内声明键绑定?
- javascript - 使用 Axios 将对象从 React.js 发布到 PHP
- graphql - Apollo Client Mutation 使用 React 组件收到错误 400
- bash - zsh: command not found - 仅在我更改路径时有效,但在重新启动终端时,路径变回
- java - 爪哇 | 从文件中查找特定行
- amazon-web-services - EC2 实例在通过 Elastic Beanstalk 启动时开始自动关闭
- r - 用两列和 17 个观测值绘制条形图
- linux - 使用 Linux 和 Intel HD 进行 OpenGL 内存分析
- reactjs - 我无法使用带有 React、Ionic、Capacitor 的 googleAuth 登录