MongoDB c#驱动程序-如何设置一个值为max,每$max

本文关键字:max 一个 何设置 驱动程序 MongoDB 设置 | 更新日期: 2023-09-27 18:12:07

我正在尝试将一堆字段设置为当前值和新值之间的最大值。

我想做

UpdateBuilder<ADocument> update = Update<ADocument>
.SetMax (d => d.HighScore, highScore)
.SetMax (d => d.MaxGameTime, gameTime)
.SetMax (d => d.MaxLevels, levels);

等。但是没有。setmax,也没有。max——这将使用$max关键字来设置它。

那么,你怎么做呢?我不想创建3个查询(在我的实际示例中是6个)来查询Max highScore并将其设置为. ge,并对其他每个字段重复。

谢谢

MongoDB c#驱动程序-如何设置一个值为max,每$max

对$max和$min操作符的支持在c#驱动程序的1.9.0版本中被添加到c#驱动程序中。您必须至少使用该版本的c#驱动程序才能使用UpdateBuilder创建包含Max或Min的更新规范。

新的Update方法构建器在这里:

https://github.com/mongodb/mongo-csharp-driver/blob/v1.x/MongoDB.Driver/Builders/UpdateBuilder.cs L269

这些与游标上的SetMax和SetMin不同,它们是不同的Max和Min。

访问这些更新操作符的最简单方法是更新到最新版本的c#驱动程序。作为一种变通方法,您可以使用以下低级技术构造更新规范:

var update = new UpdateDocument
{
    { "$max", new BsonDocument
        {
            { "HighScore", highScore },
            { "MaxGameTime", gameTime },
            { "MaxLevels", levels }
        }
    }
};