-4

如何在 C# 中编写以下查询以查找最大值和最小值

db.col.find().sort({val: 1}).limit(1); //min
db.col.find().sort({val: -1}).limit(1); //max

这是我尝试过的查询

var cursor = collection.FindAs<BsonDocument> 
    (Query.Null).SetSortOrder(SortBy.Descending("_id"‌​)).SetLimit(1)
    .SetFields(Fields.Exclude("_id"));

请帮我继续。

4

2 回答 2

2

您可以通过以下方式找到 min 和 max 文档:

var min = collection.FindAll().SetSortOrder(SortBy.Ascending("val")).SetLimit(1).FirstOrDefault();
var max = collection.FindAll().SetSortOrder(SortBy.Descending("val")).SetLimit(1).FirstOrDefault();

假设您的集合是 MongoCollection<T> 类型,那么您的 min 和 max 变量是 <T> 类型的文档。

这是内部发生的事情:

  1. FindAll 返回一个 MongoCursor<T>
  2. SetSortOrder 通过设置排序顺序来修改游标
  3. SetLimit 通过设置限制来修改光标
  4. FirstOrDefault(一种标准的 .NET LINQ 方法)枚举游标并返回唯一的文档
于 2013-03-01T15:30:50.220 回答
1
var sort =  Builders<BsonDocument>.Sort.Descending("columnName"); //build sort object   
var result = db.Find().Sort(sort).FirstOrDefault(); //apply it to collection
于 2016-06-13T20:47:32.783 回答