0

完全なメソッドは、次のようにジェネリックにする必要があります

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 で、必要なドキュメントを取得しています。そのフィールド値を抽出したいので、戻りパラメータとして送信する必要があります。

メソッドは、キー値がネストされたドキュメントのフィールドでもある可能性があるため、汎用的である必要があります。

これを達成する方法。

4

1 に答える 1

0

探しているメソッドは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;
于 2013-06-27T00:48:29.220 に答える