如何处理属性存储为不同类型的文档

本文关键字:同类型 文档 存储 属性 何处理 处理 | 更新日期: 2023-09-27 18:13:19

我使用c#模型映射到我的mongo文档。其中一个模型属性是

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

在大多数情况下,这映射为文档以以下方式存储类型…

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

然而,在某种程度上,类型被存储为一个普通数组(没有方括号)…

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

这会导致驱动抛出异常…

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

处理这个问题的最好方法是什么?我可以在文档样式到达模型之前调整它吗?我可以将其视为空,然后在更新时重写它吗?我是否应该清理我的数据并使其保持一致?

如何处理属性存储为不同类型的文档

它不是一个普通数组,它是一个嵌入式文档,驱动程序不知道是哪种类型。你一定要清理你的数据,使之一致。

如果你不能,下一个最好的办法是创建一个与旧格式匹配的不同的数据结构,并使用它来转换为新格式。