MongoDbService 10.2.0
dotnet add package MongoDbService --version 10.2.0
NuGet\Install-Package MongoDbService -Version 10.2.0
<PackageReference Include="MongoDbService" Version="10.2.0" />
<PackageVersion Include="MongoDbService" Version="10.2.0" />
<PackageReference Include="MongoDbService" />
paket add MongoDbService --version 10.2.0
#r "nuget: MongoDbService, 10.2.0"
#:package MongoDbService@10.2.0
#addin nuget:?package=MongoDbService&version=10.2.0
#tool nuget:?package=MongoDbService&version=10.2.0
MongoDbService
MongoDbService is an open-source C# class library that provides a wrapper around the official MongoDB.Driver, simplifying MongoDB integration in .NET applications.
Features
- Connection Tracking: Creates a
ConnectionRecordcollection that keeps track of compute instances connecting to your MongoDB instance, expiring old records via a TTL index - Standardized Configuration: Ensures uniform MongoDB configuration across all your projects
- Simplified Integration: Abstracts connection management so you can focus on business logic
Requirements
- .NET 10.0
- MongoDB instance (local or cloud-based)
Installation
Install the NuGet package:
dotnet add package MongoDbService
Configuration
Add the following to your appsettings.json and update the values to match your MongoDB instance:
"MongoDbSettings": {
"DatabaseName": "YourDatabaseName",
"ConnectionString": "mongodb+srv://<user>:<password>@<cluster>.mongodb.net/<database>?retryWrites=true&w=majority",
"ConnectionRecordRetentionDays": 30
}
Configuration Options:
DatabaseName(optional): The name of your MongoDB database. Falls back toUntitled-MongoDbServicewith a warning if omitted.ConnectionString(required): Your MongoDB connection string. Throws if omitted.ConnectionRecordRetentionDays(optional): How long connection-tracking records are kept, enforced by a TTL index. Defaults to30. Set to0or below to keep them indefinitely.
Usage
Inject MongoService into your classes via dependency injection:
Example: Vehicle Management
1. Define your DTO:
using MongoDB.Bson.Serialization.Attributes;
namespace YourNameSpace
{
public sealed class Vehicle
{
[BsonId]
public required string Id { get; init; }
public required string Name { get; set; }
}
}
2. Create a handler class:
using MongoDB.Driver;
using MongoDbService;
namespace YourNameSpace
{
public sealed class VehicleHandler
{
private readonly IMongoCollection<Vehicle> _vehicleCollection;
public VehicleHandler(MongoService mongoService)
{
_vehicleCollection = mongoService.Database.GetCollection<Vehicle>(
nameof(Vehicle),
new MongoCollectionSettings()
{
ReadConcern = ReadConcern.Majority,
WriteConcern = WriteConcern.WMajority
});
}
public async Task AddVehicle(string vehicleName)
{
await _vehicleCollection.InsertOneAsync(
new Vehicle()
{
Id = Guid.NewGuid().ToString(),
Name = vehicleName
});
}
public async Task<DeleteResult> RemoveVehicle(string vehicleId)
{
return await _vehicleCollection.DeleteOneAsync(
Builders<Vehicle>.Filter.Eq(v => v.Id, vehicleId));
}
}
}
Short-lived processes
The connection-tracking write is started in the background so it never delays or breaks startup. In a long-running host there is nothing to do. In a short-lived process — a console app, CLI, or function that exits quickly — the process can terminate before the write lands, so await it before returning:
await mongoService.ConnectionRecorded;
ConnectionRecorded never faults; a failed write is logged as a warning, so it needs no try/catch.
Testing
The project includes integration tests that require a running MongoDB instance.
Running Tests Locally
- Ensure MongoDB is running on
localhost:27017(or set theMONGODB_CONNECTION_STRINGenvironment variable) - Run the tests:
dotnet test
CI/CD
The GitHub Actions workflow automatically runs tests against a MongoDB container on every release.
Contributing
We welcome contributions! If you find a bug or have an idea for improvement, please submit an issue or pull request on GitHub.
Links
License
This project is licensed under the GNU General Public License v3.0.
Happy coding! 🚀🌐📚
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.10)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.10)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.10)
- MongoDB.Driver (>= 3.10.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on MongoDbService:
| Package | Downloads |
|---|---|
|
GeoIpServices
A C# library that provides geolocation information for IP addresses with MongoDB caching. Wraps third-party IP geolocation services (IpStack) to reduce API usage and costs through intelligent caching and session management. |
|
|
SMSwitch
Package Description |
|
|
MongoDbTokenManager
Create, store and verify one-time tokens (OTTs) in MongoDB: numeric codes for SMS or GUID tokens for email links, with salted hashing, expiry checks and TTL-based cleanup. |
GitHub repositories
This package is not used by any popular GitHub repositories.