如何改变直播日期?

时间:2013-04-18 12:40:29

标签: mongodb

我想知道,如何使用MongoDB更改实时数据架构?

例如,如果我有"用户"使用以下文档收集:

var user = {
    _id:123312,
    name:"name",
    age:12,
    address:{
        country:"",
        city:"",
        location:""
    }
};

现在,在我的应用程序的新版本中,如果我向" User"添加新属性实体,让我们说重量,高或成人(基于用户年),如何更改所有当前没有成人财产的实时数据。我读了MapReduce和组聚合命令,但它们似乎很舒服,适合分析操作或其他计算,或者我错了。

那么在MongoDB中更改当前运行的数据模式的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

这实际上取决于您的编程语言。 MongoDB非常擅长拥有动态模式。我认为你现在的思维模式太过于SQL,你相信所有的行,即使它们还没有值,也必须有新的字段。

现实情况完全不同。没有任何意义放入它们的行不需要字段,您可以在应用程序中检查返回的文档是否有值,如果没有,则可以假定,如在固定的SQL模式中那样值为null

所以这是MongoDB闪耀的一个方面,事实上你不必按需将新字段应用于整个模式,而是你可以在用户输入数据时延迟填充它。

所以只需将字段编码到您的应用程序中,让用户为您完成工作。

添加此字段的最佳方法是编写一个循环,可能是在控制台关闭或副本的主服务器上(如果您有一个,否则只在服务器上),如下所示:

db.users.find().forEach(function(doc){
    doc.weight = '44 stone';
    db.users.save(doc);
});

这是目前做出类似事情的最佳方式。