DataAccessProvider.MongoDB
1.3.3
dotnet add package DataAccessProvider.MongoDB --version 1.3.3
NuGet\Install-Package DataAccessProvider.MongoDB -Version 1.3.3
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DataAccessProvider.MongoDB" Version="1.3.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DataAccessProvider.MongoDB" Version="1.3.3" />
<PackageReference Include="DataAccessProvider.MongoDB" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DataAccessProvider.MongoDB --version 1.3.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: DataAccessProvider.MongoDB, 1.3.3"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DataAccessProvider.MongoDB@1.3.3
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DataAccessProvider.MongoDB&version=1.3.3
#tool nuget:?package=DataAccessProvider.MongoDB&version=1.3.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
DataAccessProvider.MongoDB
A flexible MongoDB data access provider that integrates seamlessly with the DataAccessProvider framework. This package provides a standardized interface for MongoDB operations including queries, inserts, updates, deletes, and aggregations.
Features
- Asynchronous Operations: Full async/await support for all MongoDB operations
- Type-Safe Queries: Support for both strongly-typed and BsonDocument operations
- Flexible Operations: Support for Find, Insert, Update, Delete, Count, and Aggregate operations
- LINQ Support: Native MongoDB driver integration with full LINQ support
- Resilience Support: Built-in support for resilience policies (retry, circuit breaker, etc.)
- Dependency Injection: Easy integration with .NET dependency injection
Installation
dotnet add package DataAccessProvider.MongoDB
Configuration
Add Connection String to appsettings.json
{
"ConnectionStrings": {
"MongoDBSource": "mongodb://localhost:27017/myDatabase"
}
}
Register Services
// In Startup.cs or Program.cs
services.AddDataAccessProviderMongoDB(configuration);
// Or with a direct connection string
services.AddDataAccessProviderMongoDB("mongodb://localhost:27017/myDatabase");
// Register the MongoDB data source with the factory
serviceProvider.UseDataAccessProviderMongoDB();
Usage Examples
Find Documents
// Find all documents
var findParams = new MongoDBParams
{
CollectionName = "users",
OperationType = MongoOperationType.Find
};
var result = await dataSourceProvider.ExecuteReaderAsync(findParams);
// Find with filter
var findParamsWithFilter = new MongoDBParams
{
CollectionName = "users",
Filter = Builders<BsonDocument>.Filter.Eq("name", "John"),
OperationType = MongoOperationType.Find
};
var filteredResult = await dataSourceProvider.ExecuteReaderAsync(findParamsWithFilter);
// Find with typed result
var typedParams = new MongoDBParams<User>
{
CollectionName = "users",
Filter = Builders<User>.Filter.Eq(u => u.Name, "John"),
OperationType = MongoOperationType.Find
};
var typedResult = await dataSourceProvider.ExecuteReaderAsync(typedParams);
Insert Documents
// Insert one document
var insertParams = new MongoDBParams
{
CollectionName = "users",
Document = new BsonDocument { { "name", "John" }, { "age", 30 } },
OperationType = MongoOperationType.InsertOne
};
await dataSourceProvider.ExecuteNonQueryAsync(insertParams);
// Insert many documents
var insertManyParams = new MongoDBParams
{
CollectionName = "users",
Documents = new List<BsonDocument>
{
new BsonDocument { { "name", "John" }, { "age", 30 } },
new BsonDocument { { "name", "Jane" }, { "age", 25 } }
},
OperationType = MongoOperationType.InsertMany
};
await dataSourceProvider.ExecuteNonQueryAsync(insertManyParams);
Update Documents
// Update one document
var updateParams = new MongoDBParams
{
CollectionName = "users",
Filter = Builders<BsonDocument>.Filter.Eq("name", "John"),
Update = Builders<BsonDocument>.Update.Set("age", 31),
OperationType = MongoOperationType.UpdateOne
};
await dataSourceProvider.ExecuteNonQueryAsync(updateParams);
// Update many documents
var updateManyParams = new MongoDBParams
{
CollectionName = "users",
Filter = Builders<BsonDocument>.Filter.Gte("age", 30),
Update = Builders<BsonDocument>.Update.Set("category", "senior"),
OperationType = MongoOperationType.UpdateMany
};
await dataSourceProvider.ExecuteNonQueryAsync(updateManyParams);
Delete Documents
// Delete one document
var deleteParams = new MongoDBParams
{
CollectionName = "users",
Filter = Builders<BsonDocument>.Filter.Eq("name", "John"),
OperationType = MongoOperationType.DeleteOne
};
await dataSourceProvider.ExecuteNonQueryAsync(deleteParams);
// Delete many documents
var deleteManyParams = new MongoDBParams
{
CollectionName = "users",
Filter = Builders<BsonDocument>.Filter.Lt("age", 18),
OperationType = MongoOperationType.DeleteMany
};
await dataSourceProvider.ExecuteNonQueryAsync(deleteManyParams);
Count Documents
var countParams = new MongoDBParams
{
CollectionName = "users",
Filter = Builders<BsonDocument>.Filter.Gte("age", 30),
OperationType = MongoOperationType.Count
};
var result = await dataSourceProvider.ExecuteScalarAsync(countParams);
Aggregation
var aggregateParams = new MongoDBParams
{
CollectionName = "users",
Pipeline = new[]
{
new BsonDocument("$match", new BsonDocument("age", new BsonDocument("$gte", 30))),
new BsonDocument("$group", new BsonDocument
{
{ "_id", "$category" },
{ "count", new BsonDocument("$sum", 1) }
})
},
OperationType = MongoOperationType.Aggregate
};
var result = await dataSourceProvider.ExecuteReaderAsync(aggregateParams);
Advanced Options
// With projection, sort, skip, and limit
var advancedParams = new MongoDBParams
{
CollectionName = "users",
Filter = Builders<BsonDocument>.Filter.Empty,
Projection = Builders<BsonDocument>.Projection.Include("name").Include("email"),
Sort = Builders<BsonDocument>.Sort.Descending("age"),
Skip = 10,
Limit = 20,
OperationType = MongoOperationType.Find
};
var result = await dataSourceProvider.ExecuteReaderAsync(advancedParams);
MongoDBParams Properties
CollectionName: Name of the MongoDB collectionDatabaseName: Optional database name (defaults to connection string database)Filter: Filter definition for queriesDocument: Single document for insert operationsDocuments: Multiple documents for bulk insert operationsUpdate: Update definition for update operationsProjection: Fields to include/exclude in resultsSort: Sort order for resultsSkip: Number of documents to skipLimit: Maximum number of documents to returnOperationType: Type of operation (Find, InsertOne, InsertMany, UpdateOne, UpdateMany, DeleteOne, DeleteMany, Count, Aggregate)Pipeline: Pipeline definition for aggregation operations
License
This project is licensed under the MIT License.
| 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. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- DataAccessProvider.Core (>= 1.3.6)
- MongoDB.Driver (>= 3.5.2)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.