har*_*har 8 c# mongodb mongodb-.net-driver
我正在尝试使用MongoDB的C#驱动程序从MongoDB中的"Deal"集合中检索最近的五个文档.我可以用下面的代码来做.
public IList<TEntity> GetRecentFive()
{
IList<TEntity> entities = new List<TEntity>();
using (MongoDbContext dbContext = new MongoDbContext(_dbFactory))
{
var cursor = dbContext.Set<TEntity>().FindAll().SetSortOrder(SortBy.Descending("ModifiedDateTime")).SetLimit(5);
foreach (TEntity entity in cursor)
{
entities.Add(entity);
}
}
return entities;
}
Run Code Online (Sandbox Code Playgroud)
但我想只获取最近的5个文档,FindAll()加载集合中的所有文档.我试图用Find()来做,但它需要一个查询作为参数.如何在Mongo驱动程序中为C#编写"orderby"查询进行排序?
/sf/answers/150393561/在这里问了一个类似的问题.但是接受的答案对我不起作用.
har*_*har 11
using (MongoDbContext dbContext = new MongoDbContext(_dbFactory))
{
var query = new QueryDocument();
var cursor =
dbContext.Set<TEntity>().Find(query).SetSortOrder(SortBy.Descending("ModifiedDateTime")).SetLimit(5);
foreach (TEntity entity in cursor)
{
entities.Add(entity);
}
}
Run Code Online (Sandbox Code Playgroud)
也是解决这个问题的正确方法
看起来接受的答案已经过时或者我不明白。这是在 MongoDb C# Driver 2.0 中排序的方式:
var list = await collection
.Find(fooFilter)
.Sort(Builders<BsonDocument>.Sort.Descending("NameOfFieldToSortBy")
.ToListAsync();
Run Code Online (Sandbox Code Playgroud)