Search code examples
c#mongodbmongodb-.net-driver

How to write a query for "orderby" in Mongo driver for C# to sort?


I am trying to retrieve five recent documents from "Deal" collection in a MongoDB using C# driver for MongoDB. I can do it with the below code.

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;
}

But I want to get only the recent 5 documents and FindAll() loads all the documents in the collection. I tried to do it with Find() but it needs a query as a parameter. How can I write a query for "orderby" in Mongo driver for C# to sort?

https://stackoverflow.com/a/2148479/778101 asked a similar question here. But the accepted answer doesn't work for me.


Solution

  • 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);
        }
    }
    

    is also a correct method to solve this problem