一直没实际用过MongoDB,最近有个项目中用了用,踩了一些坑。这篇文章会介绍将MongoDB->RunCommand结果映射到业务类时碰到的问题,以及对各种方法的探索。需要注意PersonInfo中的属性Id和Document中的名称_id有些不一样,需要进行映射。因为Json.NET用的比较多,基本思路就是用它来反序列化Bson,但是Json和Bson是不同的,不能用JsonConvert。既然RunCommand可以传递一个类型,那么SDK应该是支持反序列化自定义类型的。为了反序列化,适应MongoDB,定义了一些没有业务意义的类型,加了很多的属性注解,感觉还不够直接显性。又查看了BsonDocument的定义,发现可以在运行命令时先反序列化为BsonDocument,然后再根据返回的数据结构使用GetElement获取相关字段的值。

C#中如何将MongoDB->RunCommand结果映射到业务类的方法总结

C#中如何将MongoDB->RunCommand结果映射到业务类的方法总结

C#中如何将MongoDB->RunCommand结果映射到业务类的方法总结

C#中如何将MongoDB->RunCommand结果映射到业务类的方法总结

C#中如何将MongoDB->RunCommand结果映射到业务类的方法总结

C#中如何将MongoDB->RunCommand结果映射到业务类的方法总结