MongoDB - 如何忽略反序列化错误
本文关键字:反序列化 错误 何忽略 MongoDB | 更新日期: 2023-09-27 17:55:56
我正在使用MongoDB CSharp驱动程序来检索数据集合。不幸的是,其中一些数据不是很"干净",因为有些字段同时是字符串和整数。正如预期的那样,反序列化过程每次遇到与正确类型不匹配的数据时都会引发异常。
我在网上搜索了很远很远,还有StackOverflow,但没有运气。有没有办法在反序列化时简单地处理/忽略异常并移动到下一条记录?
我的代码看起来像这样:
MongoClient client = new MongoClient(MongoConnectionString);
MongoServer server = client.GetServer();
MongoDatabase database = server.GetDatabase(DatabaseName);
MongoCollection<BookingLines> bookingLines = database.GetCollection<BookingLines>("bookinglines");
var query = from e in bookingLines.AsQueryable() where e.Status != "void" select e;
代码通常会在上面的最后一行抛出错误。我还尝试将[BsonIgnore]属性添加到某些字段。
任何想法或建议都会非常有帮助。
如果结构和字段 dats 类型存在大量差异,则无法在不进行大量额外工作的情况下使用强类型对象。我建议您考虑使用 BsonDocument
这将允许序列化和反序列化任何文档,如此处的各种教程所示。
如果需要,也可以将其用作中间格式,并运行一些清理代码以将其转换为强类型的 C# 类。
如果要使用强类型类,还可以为各种字段创建自定义序列化程序(如此处所示),或者控制完整的序列化过程(如此处所述)。
您是否能够在插入前清理数据?通常,像SQL一样,您不想将废话放入数据库中。
另一种方法(如果您不需要狡猾的字段)是简单地不将它们包含在BookingLines对象中?