5

我有时会使用 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参数。

4

2 回答 2

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);
于 2012-09-10T05:02:50.573 回答
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。

于 2012-09-08T20:11:56.880 回答