Mds.Libraries.CSharp.Db.Mongo 5.0.0-beta.146900
Mds.Libraries.CSharp.Db.Mongo
Пакет для более удобной работы с MongoDB.
Пакет содержит:
- Репозиторий и фабрику для работы с MongoDB
- Средства для биндинга
ObjectId - Расширенный
HealthCheckдля MongoDB - Механизм для конфигурации подключения через
IMongoConnectionSettingsHandler
IMongoCrudFactory и IMongoCrudRepository
Для работы с коллекцией в MongoDB используется IMongoCrudRepository<T>, его можно инициализировать и получить через IMongoCrudFactory.
Пример подключения:
var mongoConnectionString = /* ... */;
services.AddMdsMongoRepository(mongoConnectionString);
// Или
// Нужно распарсить строку подключения
// Можно и не использовать MongoConnectionSettings, но тогда возникнут проблемы с health для mongo
var mongoConnectionSettings = new MongoConnectionSettings(mongoConnectionString));
services.AddMdsMongoRepository(mongoConnectionSettings);
// Или если у вас кастомная реализация MongoCrudFactory
services.AddMdsMongoRepository<CustomMongoCrudFactory>(mongoConnectionString);
Если необходимо решить в первом приближении проблемы с миграциями
var conventionPack = new ConventionPack() {
new IgnoreExtraElementsConvention(true)
};
ConventionRegistry.Register("IgnoreExtraElements", conventionPack, type => true);
Пример использования
[ApiController]
public class Controller: BaseApiController
{
private readonly IMongoCrudRepository<MongoDataType> _repository;
public Controller(IMongoCrudFactory factory)
{
_repository = factory.Get<MongoDataType>();
}
[HttpGet("{id}")]
public async Task<IActionResult> GetAsync(ObjectId id)
{
return await _repository.GetAsync(id);
}
}
Построение индексов через IMongoIndexBuiler
Вместе с IMongoCrudFactory регистрируется сервис IMongoIndexBuiler для настройки индексов для коллекции. Рекомендуется использовать его для миграции.
Маппинг ObjectId
Если action валится с ошибкой при попытке спарсить ObjectId?? Есть решение, смотрите ниже.
Маппинг ObjectId в экшенах Api контроллеров (ObjectId сам является моделью)
using Mds.Libraries.CSharp.Db.Mongo;
// ...
services.AddMvc(options =>
{
options.AddObjectIdBinder();
});
Теперь будет работать
[HttpGet("{id}")]
public async Task<IAsyncResult> FindAsync(ObjectId id)
{
// ...
}
Маппинг ObjectId в action Api контроллеров (ObjectId является частью сложной модели)
using Mds.Libraries.CSharp.Db.Mongo;
// ...
services.AddMvc()
.AddNewtonsoftJson(options =>
{
options.AddObjectIdJsonConverter();
});
Пример использования:
[HttpPost]
public async Task<IAsyncResult> FindAsync([FromBody] ComplexModel model)
{
// ...
}
public class ComplexModel
{
public ObjectId Id { get; set; }
}
HealthCheck
В проекте реализован расширенный HealthCheck, который позволяет проверить все хосты, которые указаны в строке подключения. И проверить доступность каждого хоста из строки подключения.
В AddHealthChecks можно указать с какой политикой будет выполняться проверка Mongo на доступность (см. подробнее в Mds.Libraries.CSharp.Server.Health.Tools).
var mongoConnectionString = /* ... */;
services.AddHealthChecks()
.AddMdsMongoHealthCheck(
mongoConnectionString: mongoConnectionString,
policy: MdsHealthCheckPolicy.Any,
name: "MongoHealthCheck",
tags: new[] { "db", "mongo" });
// ...
// Обязательно надо добавить сервис для проверки доступности MongoDb
services.AddMdsMongoHealthCheckServices();
Конфигурация через IMongoConnectionSettingsHandler
Этот механизм позволяет конфигурировать подключение к MongoDB. Этот механизм используется для подготовки подключения в IMongoCrudFactory и AddMdsMongoHealthCheck.
Основной кейс применения, для которого это было разработано - конфигурация проверки удаленного TLS сертификата.
Пример использования
Готовим обработчик:
internal class SampleMongoConnectionHandler : IMongoConnectionSettingsHandler
{
public SampleMongoConnectionHandler() { }
#region IMongoConnectionSettingsHandler
void IMongoConnectionSettingsHandler.Configure(MongoConnectionSettings settings)
{
// ...
}
#endregion IMongoConnectionSettingsHandler
}
Регистрируем обработчик в DI:
services.AddTransient<IMongoConnectionSettingsHandler, SampleMongoConnectionHandler>();
После данных манипуляций этот обработчик будет инстанцирован, когда необходимо будет сконфигурировать подключение через DI. Обработчиков может быть много. Отработает каждый.
Showing the top 20 packages that depend on Mds.Libraries.CSharp.Db.Mongo.
| Packages | Downloads |
|---|---|
|
Expero.Libraries.CSharp.BackgroundTasks
Пакет для работы с фоновыми задачами.
|
1 |
|
Expero.Libraries.CSharp.BackgroundTasks
Пакет для работы с фоновыми задачами.
|
2 |
.NET 7.0
- Autofac (>= 7.0.1)
- Expero.Libraries.CSharp.Logging (>= 1.6.2)
- Mds.Libraries.CSharp.Abstractions (>= 3.0.0)
- Mds.Libraries.CSharp.Server.Health.Tools (>= 2.3.0)
- Mds.Libraries.CSharp.Updates (>= 7.0.1)
- Microsoft.AspNetCore.Mvc (>= 2.2.0)
- Microsoft.AspNetCore.Mvc.NewtonsoftJson (>= 7.0.5)
- MongoDB.Driver (>= 3.4.3)
- MongoDB.Integrations.JsonDotNet (>= 1.2.0)
| Version | Downloads | Last updated |
|---|---|---|
| 5.0.0 | 1 | 02/28/2026 |
| 5.0.0-beta.146900 | 1 | 02/28/2026 |
| 4.1.0 | 1 | 02/28/2026 |
| 4.0.1 | 1 | 02/28/2026 |
| 3.3.1 | 1 | 02/28/2026 |
| 3.3.0 | 1 | 02/28/2026 |
| 3.3.0-beta.101947 | 1 | 02/28/2026 |
| 3.3.0-beta.97613 | 1 | 02/28/2026 |
| 3.2.1 | 1 | 02/28/2026 |
| 3.2.0 | 1 | 02/28/2026 |
| 3.1.2 | 1 | 02/28/2026 |
| 3.1.1 | 1 | 02/28/2026 |
| 3.1.0 | 1 | 02/28/2026 |
| 3.0.0 | 1 | 02/28/2026 |
| 2.4.0 | 1 | 02/28/2026 |
| 2.4.0-beta.8063 | 1 | 02/28/2026 |
| 2.3.6-beta.7982 | 1 | 02/28/2026 |
| 2.3.5 | 1 | 02/28/2026 |
| 2.3.1-beta19508 | 1 | 02/28/2026 |
| 2.3.1-beta16233 | 1 | 02/28/2026 |
| 1.0.0.4759-beta | 1 | 02/28/2026 |