如何实现“findone”和“;EnsureIndex"在mongo DB Driver 2.0版本中使用c#
本文关键字:Driver DB mongo 版本 实现 何实现 findone EnsureIndex quot | 更新日期: 2023-09-27 18:06:06
当我使用FindOne时,它说"'MongoClientExtensions.GetServer(MongoClient)'已过时:'使用新的API代替。'观察者。
这是我的代码
collection.EnsureIndex(IndexKeys.Ascending("Username", "Type"), IndexOptions.SetUnique(true));
var userlog = collection.FindOne(Query<UserLog>.Where(ul => ul.Username == username && ul.Type == type));
我希望这可以帮助你的FindOne函数
public async static Task<TModel> FindOne<TModel>(this IMongoCollection<TModel> collection, FilterDefinition<TModel> filter)
{
FindOptions<TModel> options = new FindOptions<TModel> { Limit = 1 };
IAsyncCursor<TModel> task = await collection.FindAsync(filter, options);
List<TModel> list = await task.ToListAsync();
TModel result = list.FirstOrDefault();
return result;
}
或
public static T FindOne<T>(this IMongoCollection<T> collection, IMongoQuery query)
{
return collection.Find(query.ToBsonDocument()).FirstOrDefault();
}
你可以在你的EnsureIndex函数中使用这些链接
如何在MongoDB中创建索引
在MongoDB中使用。net driver 2.0构建索引
我对FindOne问题没有任何想法,因为我不擅长c#。但是对于EnsureIndex:这不是一个好的使用方式。
- EnsureIndex检查索引和这种使用,导致繁重和不必要的往返。
- 假设集合有数百万个文档,并且突然发生意外事件导致删除索引。所以EnsureIndex开始创建索引作为前台和冻结收集(没有任何管理)。
- 我建议您使用CreateIndex作为这类维护工作的后台和管理进程。
最后,希望这篇文章对你有所帮助