当文档结构不同时,从MongoDB读取数据



我们目前正在开发一个.NET Core应用程序,我们正在使用MongoDB。我正在使用.NET驱动程序来访问数据。我们保存在集合中的所有数据都具有不同类型的数据结构。

例如,它有第一个文档,它有名称、电话和有效载荷,它嵌入了我们保存地址的文档:

{
"Name": "TestName",
"Phone": "23846787",
"Payload": {
"Address": "TestAddress",
"City": "TestCity"
},
"Active": true
}

然后在同一个集合中,我们有另一个文件,它有名称、电话和有效载荷,与第一个完全不同:

{
"Name": "TestName2",
"Phone": "54568765",
"Payload": {
"Weight": "70",
"Age": "45",
"Gender": "Female"
}
}

现在,当我们使用.NET驱动程序来获取这两条记录时,我们会遇到一个错误,因为它无法将嵌入的文档强制转换为对象(因为它不知道该对象(。我们需要告诉它,嵌入文档是哪种类型的对象。但我们不想这样做,因为我们有几种类型的有效载荷需要保存。我试着用鉴别器"_t〃;但这无济于事。

有人能建议我们在文档中有不同元素并且嵌入了文档时如何读取数据吗?

您可以定义一个约定,指示客户端必须忽略无法映射的元素:

var conventionPack = new ConventionPack
{
new IgnoreExtraElementsConvention(true)
};
ConventionRegistry.Register("conventions", conventionPack, _ => true);
var client = new MongoClient(options)...

最新更新