JCode.ORMX.DbProvider.MongoDB 1.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package JCode.ORMX.DbProvider.MongoDB --version 1.0.1
                    
NuGet\Install-Package JCode.ORMX.DbProvider.MongoDB -Version 1.0.1
                    
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="JCode.ORMX.DbProvider.MongoDB" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="JCode.ORMX.DbProvider.MongoDB" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="JCode.ORMX.DbProvider.MongoDB" />
                    
Project file
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 JCode.ORMX.DbProvider.MongoDB --version 1.0.1
                    
#r "nuget: JCode.ORMX.DbProvider.MongoDB, 1.0.1"
                    
#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 JCode.ORMX.DbProvider.MongoDB@1.0.1
                    
#: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=JCode.ORMX.DbProvider.MongoDB&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=JCode.ORMX.DbProvider.MongoDB&version=1.0.1
                    
Install as a Cake Tool

JCode.ORMX.DbProvider.MongoDB

MongoDB 数据库提供程序,用于 JCode.ORMX 框架。该提供程序使您能够使用 MongoDB 作为 JCode.ORMX 的后端数据库。

功能特性

  • 完整的 MongoDB 支持:支持 MongoDB 的所有基本操作
  • 类型安全:使用强类型实体类,避免运行时错误
  • LINQ 表达式树:使用 LINQ 表达式进行查询,编译时类型检查
  • 集合管理:自动创建和管理 MongoDB 集合
  • 事务支持:支持 MongoDB 事务操作
  • 聚合管道:支持 MongoDB 聚合管道
  • 索引支持:自动创建和管理索引
  • 连接池:内置连接池管理,提高性能

安装

NuGet 包

Install-Package JCode.ORMX.DbProvider.MongoDB

依赖项

  • MongoDB.Driver (2.x 或更高版本)
  • JCode.ORMX (1.0.0 或更高版本)

快速开始

1. 定义实体类

[Table("Users")]
public class User
{
    [Column(IsPrimaryKey = true)]
    public ObjectId Id { get; set; }

    [Column]
    public string Name { get; set; }

    [Column]
    public string Email { get; set; }

    [Column]
    public DateTime CreatedAt { get; set; }
}

2. 初始化 MongoDB 提供程序

// 使用连接字符串
var provider = new MongoDbProvider("mongodb://localhost:27017/MyDb");

// 或使用 MongoClient
var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("MyDb");
var provider = new MongoDbProvider(database);

3. 创建集合

var tableManager = provider.GetTableManager();
tableManager.Create(typeof(User));

4. 基本操作

var table = tableManager.Table<User>();

// 插入
var user = new User 
{ 
    Id = ObjectId.GenerateNewId(),
    Name = "John", 
    Email = "john@example.com", 
    CreatedAt = DateTime.Now 
};
table.Insert(user);

// 查询
var users = table.Find()
    .Where(u => u.Name == "John")
    .OrderBy(u => u.CreatedAt)
    .Limit(10)
    .GetList();

// 更新
table.Update()
    .Set("Email", "newemail@example.com")
    .Where(u => u.Id == userId)
    .Execute();

// 删除
table.Delete()
    .Where(u => u.Id == userId)
    .Execute();

高级功能

聚合查询

var result = table.Aggregate()
    .GroupBy("Department")
    .Count("EmployeeCount", "Id")
    .Avg("AvgSalary", "Salary")
    .GetList();

批量操作

// 批量插入
var users = new List<User> { /* ... */ };
table.InsertAll(users);

// 批量更新
table.UpdateAll(users);

// 批量删除
table.DeleteAll(users);

索引管理

// 创建索引
table.CreateIndex("Email");

// 创建复合索引
table.CreateIndex(new { Name = 1, Email = 1 });

配置选项

连接字符串选项

var connectionString = "mongodb://localhost:27017/MyDb?" +
    "connectTimeoutMS=30000&" +
    "socketTimeoutMS=30000&" +
    "serverSelectionTimeoutMS=30000&" +
    "maxPoolSize=100&" +
    "minPoolSize=10";

var provider = new MongoDbProvider(connectionString);

MongoClient 设置

var settings = new MongoClientSettings
{
    Server = new MongoServerAddress("localhost", 27017),
    ConnectTimeout = TimeSpan.FromSeconds(30),
    SocketTimeout = TimeSpan.FromSeconds(30),
    MaxConnectionPoolSize = 100,
    MinConnectionPoolSize = 10
};

var client = new MongoClient(settings);
var provider = new MongoDbProvider(client.GetDatabase("MyDb"));

类型映射

MongoDB 提供程序支持以下 .NET 类型到 BSON 类型的映射:

.NET 类型 BSON 类型
ObjectId ObjectId
string String
int Int32
long Int64
double Double
decimal Decimal128
bool Boolean
DateTime DateTime
Guid UUID
byte[] BinData
Array Array
List<T> Array
Dictionary<K,V> Document

性能建议

  1. 使用索引:为常用查询字段创建索引
  2. 批量操作:使用 InsertAll、UpdateAll、DeleteAll 进行批量操作
  3. 投影查询:只查询需要的字段,减少数据传输
  4. 连接池:合理配置连接池大小
  5. 异步操作:在适当场景下使用异步操作

故障排除

常见问题

Q: 连接超时 A: 增加 connectionTimeoutMS 和 socketTimeoutMS 参数的值

Q: 查询性能慢 A: 检查是否创建了合适的索引,使用 Explain 分析查询计划

Q: 内存使用过高 A: 调整连接池大小,使用投影查询减少返回数据量

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.3 73 2/10/2026
1.0.1 91 2/7/2026
1.0.0 80 2/6/2026