2013-03-05 84 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