我正在使用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
参数。
答案 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。