c# - 随机选择文档

标签 c# azure azure-cosmosdb

我想知道是否有办法在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 在评论中所说,您可以关注 samplefeedback 链接在 cosmos db mongo api 中获取随机结果。

但是,cosmos db sql api 中没有这样的原生功能。因此,也许您需要采取解决方法。

您可以使用存储过程在cosmos db中实现此功能,请引用此blog .

在此解决方法中,最重要的是它可能会迭代整个集合,具体取决于执行时传递给存储过程的 filterString 的值。您应该确保 filterString 在数据库中尽可能轻量。

或者您可以在查询之前获取 20 个随机 NumberoftheBook 属性,并将其用于查询过滤器。

关于c# - 随机选择文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53933800/

相关文章:

c# - 试图建立一个完整的计算机名称的网址

sql - Azure 逻辑应用 - 将 SQL 表发送到单个电子邮件 - 操作方法

json - 在 Cosmos DB 中,如何在创建文档之前检测文档大小并对其使用react

mongodb - Terraform 选择在 Azure 中使用免费层 cosmosDB 帐户

azure - 如何从 Azure DocumentDB 检索嵌套属性以及 id

c# - 如何检查文件是否存在于 ASP.NET MVC 4 中

c# - SQL Server 2014 内存表和事务

SELECT ip 上的 C# MySQL 参数 addwithvalue,estado FROM @table 不起作用

azure - Bicep 模板中的引用对象变量

powershell - 将 'az vm run-command' 与 .ps1 文件一起使用