-1

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

例如,如果我有以下文档的“用户”集合:

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

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

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

4

1 回答 1

1

这实际上取决于您的编程语言。MongoDB 非常擅长动态模式。我认为您目前的思维模式与 SQL 相关,因此您认为所有行,即使它们还没有值,也必须具有新字段。

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

因此,这是 MongoDB 的亮点之一,您不必按需将该新字段应用于整个架构,而是可以在用户输入数据时懒惰地填充它。

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

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

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

这是目前执行您所要求的事情的最佳方式。

于 2013-04-18T12:52:30.890 回答