如何在mongodb中添加新字段,如果我使用norm或csharp-mongodb驱动程序

问题描述:

我有两个基于mongodb数据库的项目。一个项目使用csharp-mongodb和另一个 - 常规驱动程序。如何在mongodb中添加新字段,如果我使用norm或csharp-mongodb驱动程序

我只使用像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的驱动程序有documnets :)

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

当retieveing时,新字段的姓氏将返回为空的旧文件。插入时,这个新字段将被添加到文档中。

@Antony工作的能力,你需要的时候你得到新的领域,以更新的所有记录?尝试选择延迟更新 - 更新请求中的每个旧记录。但是所有新式记录都会有所有记录字段。我喜欢samus driver。当然它适用于BSON文档,但是当你想更新一些记录时,MongoDB会返回完整的BSON文档,而不是部分。我是MongoDB中的新成员,但据我了解,MongoDB无法返回文档的某个部分。它可以像你的工具一样工作:get - >反序列化 - > update - > serialize - > save;当我们谈论1M-10M记录时,我认为这并不难;)

+0

的MongoDB可以返回一些对象的一部分,这里是链接:http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields我不知道它是如何实现的CSHARP -mongodb驱动程序(我不需要在我的应用程序中执行此操作)。我的问题是:我有大约100 000个类型为MyEntity的记录,然后我在类中添加新字段,然后我无法将旧类型反序列化为新类型(运行时错误)。我认为这将是很酷,如果mongo驱动程序可以初始化该值的默认值,即默认(T) – 2010-12-05 15:54:49

+0

@Antony,关于子领域的好的细节;) – Edward83 2010-12-05 16:12:45