c# - 当模型是具体类型并且现在是接口时如何进行 mongoDB 迁移
问题描述
我正在使用 MongoDB C# 驱动程序版本 2.4.4。
我在将基于具体类型的旧文档迁移到基于接口的新模型时遇到问题。
一开始的模型是这样的:
public class DeliveryRoute : MongoDbItem
{
...
public List<Step> Steps { get; set; }
...
}
现在,我需要一个界面,新代码如下所示:
public class DeliveryRoute : MongoDbItem
{
...
public List<IStep> Steps { get; set; }
...
}
当我保存新文档时,MongoDB 驱动程序会保存一个名为“_t”的字段,其中包含具体类型。
问题是我已经有一些文档没有这个字段。我认为这个解决方案很简单,然后我创建了这个脚本来为我拥有的每个集合添加新字段:
db.getCollection('MongoDBDeliveryRouteCollection').find({"UnitCode":"016302", "_id":"01630220181030013818"})
.forEach(function(deliveryRouteDocument){
deliveryRouteDocument.Steps.forEach(function(step){
if(!step.hasOwnProperty('_t')){
step._t = "Step";
}
});
db.getCollection('MongoDBDeliveryRouteCollection').save(deliveryRouteDocument);
})
该字段已创建。
但似乎驱动程序在脚本创建时忽略了“_t”。导致错误:
无法确定要为接口类型 PathTracker.Common.Interfaces.IStep 反序列化的对象的实际类型。
有人知道我做错了什么?
解决方案
推荐阅读
- ios - 如何用 portalItem 替换层 url 以用于离线 Arcgis 运行时 sdk
- c++ - 构建控制台应用程序文件资源管理器 C++
- r - 为什么只显示一些刻度线,我怎样才能显示所有刻度线?
- swift - 在 Ubuntu 上使用 Swift 创建 PDF 文件
- excel - 如何使用 VBA 在 Sharepoint 上使用通配符打开 Excel 文件
- visual-studio - 配置没有 Internet 访问权限的 TFS 2018 构建代理
- python - 批处理文件以监视两个 python 脚本是否正在运行
- google-api-java-client - Google Play Developer API 延迟请求错误 - 订阅的预期到期时间无效
- ios - UIBezierPath :仅制作绘图图像
- mesh - 在网格挤出期间计算 UV 坐标