我想知道是否有办法在CosmosDB(Microsoft Azure)中随机选择文档。
这是我的代码,我不知道在“Take(20)”之前添加什么:
public List<LeafBook> BooksList { get; private set; }
public async Task<List<LeafBook>> GetBookAsync()
{
try
{
// The query excludes completed TodoItems
var query = client.CreateDocumentQuery<LeafBook>(collectionLink, new FeedOptions { MaxItemCount = -1 })
.Take(20)
.AsDocumentQuery();
BooksList = new List<LeafBook>();
while (query.HasMoreResults)
{
BooksList.AddRange(await query.ExecuteNextAsync<LeafBook>());
}
}
catch (Exception e)
{
Console.Error.WriteLine(@"ERROR {0}", e.Message);
return null;
}
return BooksList;
}
最佳答案
kikis,正如 @David Makogon 在评论中所说,您可以关注 sample由 feedback 链接在 cosmos db mongo api 中获取随机结果。
但是,cosmos db sql api 中没有这样的原生功能。因此,也许您需要采取解决方法。
您可以使用存储过程
在cosmos db中实现此功能,请引用此blog .
在此解决方法中,最重要的是它可能会迭代整个集合,具体取决于执行时传递给存储过程的 filterString 的值。您应该确保 filterString
在数据库中尽可能轻量。
或者您可以在查询之前获取 20 个随机 NumberoftheBook
属性,并将其用于查询过滤器。
关于c# - 随机选择文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53933800/