MongoDB C#驱动程序 - 如何设置每个$ max的最大值

时间:2014-07-09 18:15:17

标签: c# mongodb

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

我认为在做

UpdateBuilder<ADocument> update = Update<ADocument>

.SetMax (d => d.HighScore, highScore)
.SetMax (d => d.MaxGameTime, gameTime)
.SetMax (d => d.MaxLevels, levels);

Etc ..但是没有.SetMax,或者没有.Max - 它会使用$ max关键字来设置它。

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

由于

1 个答案:

答案 0 :(得分:0)

在C#驱动程序的1.9.0版本中,对C#驱动程序添加了对$ max和$ min运算符的支持。您必须至少使用该版本的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 }
        }
    }
};