MongoDbService 10.2.1
dotnet add package MongoDbService --version 10.2.1
NuGet\Install-Package MongoDbService -Version 10.2.1
<PackageReference Include="MongoDbService" Version="10.2.1" />
<PackageVersion Include="MongoDbService" Version="10.2.1" />
<PackageReference Include="MongoDbService" />
paket add MongoDbService --version 10.2.1
#r "nuget: MongoDbService, 10.2.1"
#:package MongoDbService@10.2.1
#addin nuget:?package=MongoDbService&version=10.2.1
#tool nuget:?package=MongoDbService&version=10.2.1
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 MIT License.
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 (4)
Showing the top 4 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. |
|
|
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. |
|
|
SignedChannel.MongoDb
MongoDB session storage for SignedChannel. Provides IChannelSessionStore on top of MongoDbService, and is open for inheritance so an application can keep its own per-session state in the same document. |
GitHub repositories
This package is not used by any popular GitHub repositories.