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

已注册C# POCO类映射,如何用MongoDB Driver通过GUID查找文档?

通过GUID查找MongoDB文档的问题

我在C#中尝试通过GUID查找MongoDB文档时遇到了问题:
我的POCO类MyClass包含MyId属性,该属性被配置为MongoDB文档的ID。在配置MongoDB客户端前,我已经注册了该类的映射:

BsonClassMap.RegisterClassMap<MyClass>(cm =>
{
    cm.AutoMap();
    cm.MapIdProperty(m => m.MyId)
        .SetSerializer(new GuidSerializer(GuidRepresentation.Standard));
});

从MongoDB Compass的截图可以确认文档已正确存储到数据库,但使用以下筛选器构建器查询时,始终无法得到结果:

Guid myGuidId = ...;
var filterBuilder = Builders<MyClass>.Filter;
var filter = filterBuilder.Eq(d => d.MyId, myGuidId);
return Collection.Find(filter).FirstOrDefaultAsync();

奇怪的是,如果一开始采用以下两种方式之一,查询就能正常检索到目标文档:

  • 将GUID序列化为字符串存储:cm.MapIdProperty(m => m.SimulationId).SetSerializer(new GuidSerializer(BsonType.String))
  • 使用已过时的全局GUID序列化配置:BsonDefaults.GuidRepresentation = GuidRepresentation.Standard

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:14:52