Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果我使用norm或csharp mongodb驱动程序,如何在mongodb中添加新字段_Mongodb_Mongodb .net Driver_Norm - Fatal编程技术网

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

如果我使用norm或csharp mongodb驱动程序,如何在mongodb中添加新字段,mongodb,mongodb-.net-driver,norm,Mongodb,Mongodb .net Driver,Norm,我有两个基于mongodb数据库的项目。一个项目使用csharp mongodb和另一个-norm驱动程序 我只使用诸如GetCollection之类的通用方法向数据库发出请求。 如何在实体中添加新字段以减少痛苦 比如说,, 一开始我有 public class MyEntity { public int _id {get;set;} public string Firstname {get;set;} } 几天后,我决定添加新字段 public class MyEnti

我有两个基于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
}
我只看到一种方法——make实用程序,它获取我的实体,然后将其反序列化并转换为新类型,然后序列化为bson。至于我,这很难,因为我有超过一百万张唱片


我知道csharp mongodb驱动程序能够使用documnets:)

@Antony,当您获得新字段时是否需要更新所有记录?尝试选择延迟更新-更新请求中的每个旧记录。但所有新型记录都将具有所有记录字段


我喜欢。当然,它适用于BSON文档,但是当您想要更新某些记录时,MongoDB返回完整的BSON文档,而不是部分。我是MongoDB新手,但据我所知,MongoDB无法返回文档的某些部分。它的工作原理与您的实用程序类似:获取->反序列化->更新->序列化->保存;当我们谈论100万到1000万的记录时,我认为这并不难;)

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


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

Mongodb可以返回部分对象此处是链接:我不知道它是如何在csharp Mongodb驱动程序中实现的(我不需要在我的应用程序中执行此操作)。我的问题是:我有大约100000条MyEntity类型的记录,然后我在类中添加新字段,然后我无法将旧类型反序列化到我的新类型(运行时错误)。我认为如果mongo驱动程序可以用默认值初始化这个值,也就是default(T)@Antony,关于字段子集的详细信息;)会很酷@安东尼,如果你想在这里提问,请提供一个链接;)