You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置C# MongoDB Driver查询的字段命名大小写

解决MongoDB查询过滤器字段大小写问题

你遇到的是MongoDB .NET驱动默认的字段命名转换问题——驱动会自动把C#里的PascalCase(首字母大写)属性转成MongoDB的camelCase(首字母小写)字段名。要让查询生成UserId而不是userId,有两种常用方法:

方法一:给单个属性指定字段名

在UserWebHook类的UserId属性上添加[BsonElement]特性,显式指定MongoDB中的字段名和属性名一致:

using MongoDB.Bson.Serialization.Attributes;

public class UserWebHook
{
    [BsonElement("UserId")]
    public string UserId { get; set; }
    // 其他属性...
}

这样驱动在生成查询过滤器时,就会使用你指定的UserId作为字段名。

方法二:全局配置序列化规则

如果希望所有实体类的属性都保留原大小写(不自动转驼峰),可以在程序启动阶段配置MongoDB的序列化约定:

using MongoDB.Bson.Serialization;
using MongoDB.Bson.Serialization.Conventions;

// 示例:在Program.cs或Startup.cs中添加
var conventionPack = new ConventionPack();
// 使用默认元素命名约定,直接以C#属性名作为MongoDB字段名
conventionPack.Add(new DefaultElementNameConvention());
// 注册全局约定,对所有实体生效
ConventionRegistry.Register("KeepOriginalCase", conventionPack, t => true);

配置完成后,所有基于该驱动的查询都会保留属性的原大小写来生成MongoDB字段名。

注意:如果数据库中已有驼峰命名的历史数据,全局修改规则可能导致查询不匹配,建议根据实际数据情况选择合适的方案。

内容的提问来源于stack exchange,提问作者Sergio Jr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:40:00