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

使用Guid字符串作为MongoDB主键时的查询报错问题

问题原因

MongoDB C#驱动默认会把标记[BsonId]的string类型字段解析为ObjectId(要求是24位十六进制字符串),但你的集合中_id是带连字符的UUID格式字符串(36位),驱动尝试将其转换为ObjectId时失败,抛出该错误。

解决方法

方式一:显式指定Id按字符串类型处理

修改POCO类的Id字段,添加[BsonRepresentation(BsonType.String)]特性,明确告诉驱动将_id作为字符串解析:

public class ProductCategory
{
   [BsonId]
   [BsonRepresentation(BsonType.String)]
   public string Id { get; set; }

   [BsonElement("name")]
   public string Name { get; set; }
}

方式二:改用Guid类型匹配UUID格式

因为你的_id是UUID格式,直接对应C#的Guid类型更契合,修改POCO类:

public class ProductCategory
{
   [BsonId]
   public Guid Id { get; set; }

   [BsonElement("name")]
   public string Name { get; set; }
}

这种方式下,驱动会自动完成UUID与Guid的双向转换,无需手动处理字符串格式。

验证

修改完成后重新执行查询代码,驱动就能正确识别_id类型,不会再抛出格式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 02:12:09