c# - 如何检查 MongoDB C# 中的索引(是否存在),因为 IndexExist 已从较新版本中弃用
问题描述
我刚刚将旧的 MongoDB C# 驱动程序更新为2.7.3
版本,从 nuget 包更新它后,我得到了很多错误行
EnsureIndex 未定义
和
IndexExists 未定义
ping 未定义
和
getServer 未定义
他们的更新文档或文档也是如此,它将解释如何使用较新版本获取这些文档。
var connectionString = string.Format("mongodb://{0}:{1}", mongoServerInstance.Address.Host, mongoServerInstance.Address.Port);
connectionString = ReplaceHostNames(connectionString);
_logger.Debug("checking for indexes on server, {0}", mongoServerInstance.Address.Host);
var settings = MongoClientSettings.FromUrl(new MongoUrl(connectionString));
settings.ConnectionMode = ConnectionMode.Direct;
settings.ReadPreference = ReadPreference.SecondaryPreferred;
var mongoClient = new MongoClient(settings);
var listMongo = mongoClient.ListDatabases();
var server = mongoClient.GetServer();
foreach (var index in MongoRepositoryConfiguration.Indexes)
{
var mongoDataBase = mongoClient.GetDatabase(index.DatabaseName);
if (!mongoClient.GetDatabase(index.DatabaseName)
.GetCollection<BsonDocument>(index.CollectionName)
.IndexExists(index.MongoIndexKeys))
{
if (index.IndexName != "")
{
if (!mongoClient.GetDatabase(index.DatabaseName)
.GetCollection<BsonDocument>(index.CollectionName)
.IndexExistsByName(index.IndexName))
{
AddIndexToList(index, nonExistentIndexes);
}
}
else
{
AddIndexToList(index, nonExistentIndexes);
}
}
}
server.Disconnect();
解决方案
collection.Indexes.List()
在 2.x 驱动程序中,您可以通过该方法获取给定集合的索引的详细信息。这是一个使用MongoDB.Entities创建两个索引并获取它们的名称的示例[免责声明:我是作者]
using MongoDB.Entities;
using MongoDB.Driver;
using System;
namespace StackOverflow
{
public class Program
{
public class User : Entity
{
public string FirstName { get; set; }
public string LastName { get; set; }
public int Age { get; set; }
}
static void Main(string[] args)
{
new DB("test");
DB.Index<User>()
.Key(u => u.FirstName, KeyType.Text)
.Key(u => u.LastName, KeyType.Text)
.Create();
DB.Index<User>()
.Key(u => u.Age, KeyType.Ascending)
.Create();
var indexes = DB.Collection<User>().Indexes.List().ToList();
foreach (var index in indexes)
{
Console.WriteLine(index.GetElement("name"));
}
Console.Read();
}
}
}
推荐阅读
- java - 无法理解此算法中用于 Java 中相机移动的数学/代码
- java - 如何动态创建数据库并实例化 JdbcTemplate?
- docker - 我如何在一个 docker 映像中运行多个 jmx 文件,并且所有结果都应该显示在一个地方
- sql-server-2008 - SQL Server 中的数据模型创建
- python - 如何在检测到的人体轮廓周围放置边界框
- python-3.x - 如何从以下html中提取数据?
- c# - Web-API 的路由配置
- r - R data.frames 列表,平均按公因子变量汇总分组
- java - 如何验证 @Xml.propOrder 注释值?
- android - 为了根据 json 响应进行过滤,适配器中的可见性消失时发生了巨大的差距