2013-03-05 86 views
0

我们有一个包含数百个类/枚举的大型应用程序,我们希望使用MongoDB来存储其中的一些。将.NET对象插入到MongoDB中

情况是,有一个当前的系统,我们将.NET对象序列化为SQL数据库中的字段,然后按需要反序列化。我们想要的是将对象放到Mongo中,这样可以直接查询对象的属性(即不需要将对象加载到内存中,反序列化等)。这样我们就可以开始从历史数据中获取一些分析数据,而不必大幅改变代码库。

我的问题是,这是否容易?有没有在C#驱动程序内置串行器来做到这一点?

我也很乐意提供更好的方法来做到这一点,如果我想要做的事情本质上是错误的。

更新:要清楚,我想要做的是拿一个已经使用NHibernate加载的对象,并将其作为Queryable对象插入到Mongo中。最终,我也想在某些时候将它加载回内存。

+2

它记录在这里:http://docs.mongodb.org/ecosystem/tutorial/serialize-documents- with the-csharp-driver/ – WiredPrairie 2013-03-05 13:02:31

+0

我试图做到这一点,没有对代码进行大规模的修改,而且上面的链接看起来像我需要为每个实体(以及它的子代)创建一个ClassMap ...是否有相当于组装的NHiberate Automap? – Martin 2013-03-05 13:30:06

+0

当你切换到一个新的数据库,并试图添加新的功能...我期望一些大量的代码流失。对不起,我不熟悉NHibernate的Automap。 C#驱动程序具有Mapper功能和属性,并通过'IBsonSerializable'定制序列化(或使用更原始的/原生的'BsonDocument')。如果你希望MongoDB表现良好,你将添加正确的索引,映射到标准数据类型等。我期望它是一个合理的工作量。 – WiredPrairie 2013-03-05 15:30:43

回答

0

MongoDB基本上是JSON文档的存储,所以如果你可以用JSON方式序列化你的对象,你应该可以将它存储在MongoDB中,并且我认为有很多用于.NET的JSON序列化器,所以应该很容易找到一个。

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

问候,

+0

感谢您的回应,我正在寻找比这更多的信息。我想序列化一个使用NHibernate创建的对象,然后反序列化它。 – Martin 2013-03-05 16:58:57

+0

请注意,MongoDB以BSON格式存储文档(请参阅http://bsonspec.org)。尽管BSON是“Binary JSON”的简称,并且便于序列化类似JSON的数据结构,但它并不是JSON的同义词,而MongoDB也不是“JSON文档的存储”。 – Stennie 2013-04-02 22:27:27