我想知道,如何使用MongoDB更改实时数据架构?
例如,如果我有"用户"使用以下文档收集:
var user = {
_id:123312,
name:"name",
age:12,
address:{
country:"",
city:"",
location:""
}
};
现在,在我的应用程序的新版本中,如果我向" User"添加新属性实体,让我们说重量,高或成人(基于用户年),如何更改所有当前没有成人财产的实时数据。我读了MapReduce和组聚合命令,但它们似乎很舒服,适合分析操作或其他计算,或者我错了。
那么在MongoDB中更改当前运行的数据模式的最佳方法是什么?
答案 0 :(得分:1)
这实际上取决于您的编程语言。 MongoDB非常擅长拥有动态模式。我认为你现在的思维模式太过于SQL,你相信所有的行,即使它们还没有值,也必须有新的字段。
现实情况完全不同。没有任何意义放入它们的行不需要字段,您可以在应用程序中检查返回的文档是否有值,如果没有,则可以假定,如在固定的SQL模式中那样值为null
。
所以这是MongoDB闪耀的一个方面,事实上你不必按需将新字段应用于整个模式,而是你可以在用户输入数据时延迟填充它。
所以只需将字段编码到您的应用程序中,让用户为您完成工作。
添加此字段的最佳方法是编写一个循环,可能是在控制台关闭或副本的主服务器上(如果您有一个,否则只在服务器上),如下所示:
db.users.find().forEach(function(doc){
doc.weight = '44 stone';
db.users.save(doc);
});
这是目前做出类似事情的最佳方式。