MongoDB如何异步获取集合中最后插入的记录?
问题分析与解决
你的代码报错是因为Find(_ => true).SortByDescending(u => u.DateCreated).Limit(1)只是构建了MongoDB的查询语句,返回的是查询构建器对象IFindFluent<UserModel, UserModel>,但你的方法声明要返回UserModel,类型不匹配导致编译错误。不管同步还是异步,都需要执行查询才能拿到实际的实体对象。
修正后的异步方法代码
public async Task<UserModel> GetLastCreatedUser() { return await _users .Find(_ => true) .SortByDescending(u => u.DateCreated) .Limit(1) .FirstOrDefaultAsync(); }
关键改动说明:
- 添加
await关键字:异步方法中必须等待异步操作完成 - 末尾调用
FirstOrDefaultAsync():这是MongoDB驱动提供的异步方法,会实际执行查询并返回匹配的第一条数据,如果没有数据则返回null
如果是同步方法,对应的写法是调用FirstOrDefault():
public UserModel GetLastCreatedUserSync() { return _users .Find(_ => true) .SortByDescending(u => u.DateCreated) .Limit(1) .FirstOrDefault(); }
内容的提问来源于stack exchange,提问作者user16764349
相关产品推荐
相关产品推荐

