如何在 1 个查询中从 Mongo 数据库中获取最小值和最大值? C#

How to get Min and Max values from Mongo DB in 1 query? C#

我可以在 2 个查询中获得最小值和最大值, 但是 C# 可以用 1 来实现吗?

var max = (await collection.Sort(descendingDateTime).Limit(1).FirstOrDefaultAsync())
                        .GetValue(timeField).ToUniversalTime();

var min = (await collection.Sort(ascendingDateTime).Limit(1).FirstOrDefaultAsync())
                        .GetValue(timeField).ToUniversalTime();

您可以使用如下所示的组聚合来实现,但对于非常大的集合来说效率不高,因为分组会导致集合扫描并耗尽内存(可能会达到 100mb 的分组限制)。最好使用 2 个查找查询来完成,因为它可以使用索引。作为一项改进,您可以 运行 通过使用 await Task.WhenAll(minTask, maxTask)

同时查询这两个查询
db.collection.aggregate(
[

    {
        $group: {
            _id: null,
            Min: { $min: "$TimeField" },
            Max: { $max: "$TimeField" }

        }
    },
    {
        $project: {
            _id: 0
        }
    }

])

afaik 也无法将上述聚合管道转换为强类型的 c# 查询,因为驱动程序不支持按空 ID 分组。