2014-07-16 109 views
0

我使用c#模型映射到我的mongo文檔。其中一個模型的屬性是如何處理屬性存儲爲不同類型的文檔

public List<string> genres = new List<string>(); 

這映射的大部分時間作爲文件存儲在以下方式流派......

"genres" : [ 
    "rock", 
    "rockabilly", 
    "punk" 
] 

在某一點然而,流派正在商店爲純陣列(沒有括號)...

"genres" : { 
    "1" : "rock" 
} 

這將導致驅動程序拋出一個異常...

Expected element name to be '_t', not '1' 

處理這個問題的最佳方法是什麼? 我可以在文檔樣式進入模型之前調整文檔樣式嗎? 我可以將它視爲null,然後在更新時覆蓋它嗎? 我應該只是清理我的數據並保持一致?

回答

0

這不是一個普通數組,它是一個嵌入式文檔,驅動程序不知道哪種類型。你應該清理你的數據並保持一致。

如果不行,最好的辦法是創建一個與舊格式匹配的不同數據結構,並用它來轉換爲新格式。

+0

對不起是第一個例子是一個數組,第二個是嵌入式文檔。不確定'創建一個不同的數據結構'是什麼意思......你的意思是創建一個新的屬性並運行一個例程來將舊的混合類型轉換爲新的一致性類型,然後使用它? – Robjocky

+0

@ user2473827是的,或者是具有所有相同屬性的新類和舊版本的流派屬性 – i3arnon

相關問題