将.NET对象插入MongoDB

将.NET对象插入MongoDB,mongodb,mongodb-.net-driver,Mongodb,Mongodb .net Driver,我们有一个包含数百个类/枚举的大型应用程序,我们希望使用MongoDB来存储其中的一些类/枚举 目前的情况是,在一个系统中,我们将.NET对象二进制序列化到SQL数据库中的一个字段中,然后按需反序列化。我们想要的是以一种允许我们直接查询对象属性的方式将对象放入Mongo(即,不必将对象加载到内存、反序列化等)。这样我们就可以开始从历史数据中获得一些分析,而不必大幅更改代码库 我的问题是,这很容易做到吗?C#驱动程序中是否有内置序列化程序来执行此操作 如果我试图做的事情本质上是错误的,我也愿意接受

我们有一个包含数百个类/枚举的大型应用程序,我们希望使用MongoDB来存储其中的一些类/枚举

目前的情况是,在一个系统中,我们将.NET对象二进制序列化到SQL数据库中的一个字段中,然后按需反序列化。我们想要的是以一种允许我们直接查询对象属性的方式将对象放入Mongo(即,不必将对象加载到内存、反序列化等)。这样我们就可以开始从历史数据中获得一些分析,而不必大幅更改代码库

我的问题是,这很容易做到吗?C#驱动程序中是否有内置序列化程序来执行此操作

如果我试图做的事情本质上是错误的,我也愿意接受提出更好方法的答案


更新:说得很清楚,我要做的是获取一个使用NHibernate加载的对象,并将其作为可查询对象插入Mongo。最后,我也希望在某个时候将其加载回内存。

MongoDB基本上是一个JSON文档的存储库,因此如果您可以用JSON方式序列化对象,您应该可以将其存储在MongoDB中,我假设.NET有很多JSON序列化程序,因此应该很容易找到一个

一旦所有内容都以JSON的形式存储在MongoDB中,您就可以查询它,而无需使用其他工具直接查询数据库


关于,

您可以为MongoDB使用一个轻量级的动态数据访问.NET组件

这里有文档记录:我正在尝试在不对代码进行大量更改的情况下执行此操作,上面的链接看起来需要为每个实体(及其子实体)创建一个类映射。。。有没有类似于NHiberate Automap的组件?当你切换到一个新的DB,并试图添加新功能时。。。我预计会有大量的代码流失。对不起,我不熟悉NHibernate的自动地图。C#驱动程序具有映射器功能和属性,并通过IBsonSerializable(或使用更原始/原生的
BsonDocument
)进行自定义序列化。如果你想让MongoDB表现良好,你需要添加正确的索引,映射到标准数据类型,等等。我希望这是一个合理的工作量。我们并不是真的在应用程序中寻找任何新功能,只是简单地将数据存储为字节数组,而是将其存储为子对象。我不想讨论的是向所有成员添加属性,或者单独映射每个类。基本的快乐路径可能适合您。您是否尝试过GetServer().Collection(“myCollection”).Save(myWhateverClassNHibernateGaveMe)?感谢您的回复,我想了解更多信息。我试图序列化使用NHibernate创建的对象,然后反序列化它。虽然BSON是“Binary JSON”的缩写,便于序列化类似JSON的数据结构,但它不是JSON的同义词,MongoDB也不是“JSON文档的存储”。