如何在C#中从mongo游标中获取字段的最大值

本文关键字:获取 字段 最大值 游标 mongo 中从 | 更新日期: 2023-09-27 18:19:31

完整的方法应该像一样通用

public string strGetMaxValue(string strDBName, string strCollectionName, string strKey)
{
 // in this method if pass some prms it should give max value
}

我试过的是

string strMaxValue = "";            
        MongoServer objServer = this.ConnectToServer();
        if ((strDBName != null || strDBName != "") && (strCollectionName != null || strCollectionName != ""))
        {
            string[] strArrays = new string[1];
            strArrays[0] = strKey;
            //MongoCursor<BsonDocument> objCursor = objServer.GetDatabase(strDBName).GetCollection(strCollectionName).Find(query).SetSortOrder(SortBy.Descending(strArrays)).SetLimit(1);
            var objCursor = objServer.GetDatabase(strDBName).GetCollection(strCollectionName).FindAll().SetSortOrder(SortBy.Descending(strArrays)).SetLimit(1).ToArray();

        }

在那个objCursor中,我正在获取我需要的文档。我想提取该字段值,并需要将其作为返回参数发送

该方法应该是通用的,因为键值也可以是嵌套文档中的字段。

如何做到这一点。?

如何在C#中从mongo游标中获取字段的最大值

您要查找的方法是SetFields(params string[] fields),它可以在光标上调用。它会将结果集限制为您传入的字段(数组)和id。然后,您可以使用[] 对字段进行索引

        var result = server
            .GetDatabase(strDBName)
            .GetCollection(strCollectionName)
            .FindAll()
            .SetSortOrder(SortBy.Descending(new [] {strKey}))
            .SetFields(new [] {strKey}) // The way to wrap something in an array for reference
            .SetLimit(1)
            .FirstOrDefault(); // Will return null if there are no rows
        // There is a chance that we have no results
        if (result != null)
            // You might want to make sure this is a string / add the datatype
            // as a Generic T to your function
            return result[strKey].AsString;
        else
            return null;