You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET中实现MongoDB异步排序以获取集合最新插入记录

MongoDB .NET 驱动同步查询方法转异步实现方案

最终异步实现代码

using MongoDB.Driver;
using System.Threading.Tasks;

public async Task<T> LoadRecentRecordAsync<T>(string collectionName)
{   
    var collection = db.GetCollection<T>(collectionName);
    return await collection.Find(new BsonDocument())
                           .Sort("{_id:-1}")
                           .Limit(1)
                           .FirstAsync();
}

核心修改说明

  • 方法签名遵循.NET异步开发规范:添加async修饰符,返回值从原有的T改为Task<T>,方法名新增Async后缀
  • 同步API替换为异步API:将末尾的同步取值方法First()替换为MongoDB.Driver内置的异步扩展方法FirstAsync(),并添加await关键字等待异步执行结果

可选优化项

1. 强类型排序(推荐)

避免字符串拼写错误,可将排序参数改为强类型写法:

// 通用写法,无需实体类提前定义Id属性
.Sort(Builders<T>.Sort.Descending("_id"))

// 若实体类已明确声明Id属性,用该写法可在编译阶段检查错误
.Sort(Builders<T>.Sort.Descending(x => x.Id))

2. 空集合兼容

如果允许查询不到数据时返回默认值而非抛出异常,可将FirstAsync()替换为FirstOrDefaultAsync()。

注意:调用该异步方法时必须配合await关键字使用,上层调用方法也需要添加async修饰符,避免出现死锁或拿到未执行完成的Task对象。

内容的提问来源于stack exchange,提问作者Karl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 18:24:09