如何获取MongoDB集合中的最后一项?

时间:2012-09-08 17:15:05

标签: c# mongodb mongodb-.net-driver

我正在使用MongoDB执行所有类型的快速插入或作为日志,但是我遇到一些麻烦来获得非常简单的查询

如果在Mongo中,我将如何与此T-SQL类似

SELECT TOP 1 [date] FROM [Collection] ORDER BY [date] desc

换句话说,集合中的最后一个日期是什么。

我正在尝试使用FindOne或任何其他可以返回一个文档的文件,但是没有人接受sortBy属性...我该怎么做?

var query = Query.EQ("status", "pending");
var sortBy = SortBy.Descending("date");

return collectionLog.FindOneAs<BsonDocument>(query, sortBy);

上面的最后一行是完美的,但此方法只接受query参数。

2 个答案:

答案 0 :(得分:8)

C#驱动程序中没有.SetSortOrder() FindOneAs方法。这是因为FindOneAs返回文档而.SetSortOrder()MongoCursor的成员。

等效查询类似于:

var query = Query.EQ("status", "pending");
var sortBy = SortBy.Descending("date");

return collectionLog.FindAs<BsonDocument>(query).SetSortOrder(sortby).SetLimit(1);

答案 1 :(得分:2)

根据1.4版,C#驱动程序支持LINQ。我认为这样的事情可能会有所帮助:

using MongoDB.Driver.Linq;

return collectionLog.AsQueryable().Where(l => l.status == "pending").AsQueryable().OrderByDescending(l => l.date);

请注意第一个AsQueryable(),这是LINQ进入Mongo集合的必要开始。 第二个AsQueryable()是必要的,因为Where返回IEnumerable,但OrderByDescending()需要IQueryable。