我想返回CosmosDb集合中的所有文档
我的代码如下
client.CreateDocumentQuery(UriFactory.CreateDocumentUri(dbName, colName,"id")).ToList();
它不起作用。我可以找到特定文件,但不是全部
谢谢
答案 0 :(得分:4)
UriFactory.CreateDocumentUri
为文档特定查询创建一个Uri。
您想要的是集合中的所有文档,因此您需要创建的是创建一个集合Uri。
您可以使用UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName);
不过,请注意您的练习。
对于返回大量文档的操作,建议您使用.AsDocumentQuery()
方法,然后在ExecuteNextAsync
期间执行query.HasMoreResults
。
您应该那样做,因为如果您仅在.ToList()
上使用IQueryable
,那么CosmosDB SDK确实会通过电线同步跳闸,这将对应用程序的性能造成不利影响。
Here是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
}
}
}