为了账号安全,请及时绑定邮箱和手机立即绑定

尝试将 BsonDocument 反序列化为类时出现 System.FormatException

尝试将 BsonDocument 反序列化为类时出现 System.FormatException

C#
心有法竹 2022-06-18 16:21:38
我对 mongoDB 完全陌生,我正在学习基础知识。我正在使用 mongoDB 和 Robo 3T 的 .NET 驱动程序(2.7.2)作为实用程序来手动管理数据库。我创建了一个TestDB数据库,在其中创建了myCollection许多这样的测试文档:/* 1 */{    "_id" : ObjectId("5c124ee01c2477487574b212"),    "x" : 1.0}/* 2 */{    "_id" : ObjectId("5c17d26369babb0c04610a33"),    "count" : 1}/* 3 */{    "_id" : ObjectId("5c17d40f6002a11c44bc2c42"),    "name" : "MongoDB",    "type" : "Database",    "count" : 1,    "info" : {        "x" : 203,        "y" : 102    }}/* 4 */{    "_id" : ObjectId("5c17dead9e83de138c71278a"),    "counter" : 0}/* 5 */{    "_id" : ObjectId("5c17dead9e83de138c71278b"),    "counter" : 1}/* 6 */{    "_id" : ObjectId("5c17dead9e83de138c71278c"),    "counter" : 2}/* 7 */{    "_id" : ObjectId("5c17dead9e83de138c71278d"),    "counter" : 3}/* 8 */{    "_id" : ObjectId("5c17dead9e83de138c71278e"),    "counter" : 4}/* 9 */{    "_id" : ObjectId("5c17dead9e83de138c71278f"),    "counter" : 5}/* 10 */{    "_id" : ObjectId("5c17dead9e83de138c712790"),    "counter" : 6}/* 11 */{    "_id" : ObjectId("5c17dead9e83de138c712791"),    "counter" : 7}/* 12 */{    "_id" : ObjectId("5c17dead9e83de138c712792"),    "counter" : 8}/* 13 */{    "_id" : ObjectId("5c17dead9e83de138c712793"),    "counter" : 9}/* 14 */{    "_id" : ObjectId("5c17dead9e83de138c712794"),    "counter" : 10}等等......在我的控制台应用程序(在 Visual Studio 2017 社区)中,我创建了两个这样的类:public class MyClass{    [BsonId]    public ObjectId ID { get; set; }    public string name { get; set; }    public string type { get; set; }    public int count { get; set; }    public List<Info> info { get; set; }}public class Info{    public int x { get; set; }    public int y { get; set; }}我想从数据库中获取一个文档,该文档/* 3 */在我的示例数据中标记为更复杂的数据。我尝试在 main 方法中获取数据的程序是这样的:当我启动应用程序时,我收到此错误:System.FormatException:"An error occurred while deserializing the info property of class TEST_MongoDB_consoleApp.MyClass: Cannot deserialize a 'List<Info>' from BsonType 'Document'."我究竟做错了什么 ?在这种情况下,程序运行时没有任何异常,并且我从文档中获得了正确的 ObjectID 值。再次 - 我做错了MyClass什么?
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

这会有所帮助。在 Mongodb 中,对于集合中的每个条目,都需要有一个 objectid 后跟字段。


需要更改您的信息类,例如:


public class Info

{

    [BsonId]

    public ObjectId Id {get; set; }

    public int x { get; set; }

    public int y { get; set; }

}


查看完整回答
反对 回复 2022-06-18
  • 1 回答
  • 0 关注
  • 723 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号