2

我有两个基于 mongodb 数据库的项目。一个项目使用 csharp-mongodb 和另一个 - norm 驱动程序。

我只使用 GetCollection 等通用方法向我的数据库发出请求。如何以不那么痛苦的方式向我的实体添加新字段?

例如,一开始我有

public class MyEntity 
{
     public int _id {get;set;}
     public string Firstname {get;set;}
}

几天后我决定添加新字段

public class MyEntity 
{
     public int _id {get;set;}
     public string Firstname {get;set;}
     public string Lastname {get;set;} //here is
}

我只看到一种方法-制作实用程序,它可以获取我的实体,然后将其反序列化并转换为新类型,然后序列化为 bson。至于我——这很难——因为我有超过 100 万条记录。

我知道 csharp mongodb 驱动程序有能力使用文档网:)

4

2 回答 2

1

如果您使用的是 Norm 驱动程序,新添加的字段会在插入和检索时自动更新。您不必进行手动反序列化。

检索时,旧文档的新字段 Lastname 将返回为 null。插入时,此新字段将添加到文档中。

于 2010-12-06T10:00:12.980 回答
0

@Antony,获得新字段时是否需要更新所有记录?尝试选择延迟更新 - 更新请求中的每条旧记录。但是所有新式记录都会有所有记录字段。

我喜欢萨姆斯司机。当然它适用于 BSON 文档,但是当您想要更新某些记录时,MongoDB 返回完整的 BSON 文档,而不是部分。我是 MongoDB 的新手,但据我所知,MongoDB 无法返回文档的某些部分。它就像您的实用程序一样工作:获取 -> 反序列化 -> 更新 -> 序列化 -> 保存;当我们谈论 1M-10M 记录时,我认为这并不难;)

于 2010-12-05T15:23:37.353 回答