2014-07-16 68 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

相关问题