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]属性添加到某些字段。

任何想法或建议都会非常有帮助。

MongoDB - 如何忽略反序列化错误

如果结构和字段 dats 类型存在大量差异,则无法在不进行大量额外工作的情况下使用强类型对象。我建议您考虑使用 BsonDocument 这将允许序列化和反序列化任何文档,如此处的各种教程所示。

如果需要,也可以将其用作中间格式,并运行一些清理代码以将其转换为强类型的 C# 类。

如果要使用强类型类,还可以为各种字段创建自定义序列化程序(如此处所示),或者控制完整的序列化过程(如此处所述)。

您是否能够在插入前清理数据?通常,像SQL一样,您不想将废话放入数据库中。

另一种方法(如果您不需要狡猾的字段)是简单地不将它们包含在BookingLines对象中?