Mds.Libraries.CSharp.Db.Mongo 3.3.0-beta.101947

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

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