我刚刚将旧的 MongoDB C# 驱动程序更新到 2.7.3
版本,从 nuget 包更新后,我收到了很多错误行
EnsureIndex is not defined
和
IndexExists not defined
ping is not defined
和
getServer is not defined
他们的更新文档或文档也将解释如何使用较新版本获取这些内容。
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();
最佳答案
在 2.x 驱动程序中,您可以通过 collection.Indexes.List()
方法获取给定集合的索引详细信息。这是创建两个索引并使用 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();
}
}
}
关于c# - 如何检查 MongoDB C# 中的索引(是否存在),因为 IndexExist 从新版本中已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56577878/