Mongodb 如何更改直播日期?

Mongodb 如何更改直播日期?,mongodb,Mongodb,我想知道,如何使用MongoDB更改实时数据模式 例如,如果我有包含以下文档的“用户”集合: var user = { _id:123312, name:"name", age:12, address:{ country:"", city:"", location:"" } }; 现在,在我的应用程序的新版本中,如果我在“用户”实体中添加了一个新属性,比如体重、身高或成人(基于用户年份),那么如何更改没有成

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

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

var user = {
    _id:123312,
    name:"name",
    age:12,
    address:{
        country:"",
        city:"",
        location:""
    }
};
现在,在我的应用程序的新版本中,如果我在“用户”实体中添加了一个新属性,比如体重、身高或成人(基于用户年份),那么如何更改没有成人属性的所有当前实时数据。我读过MapReduce和group aggregation命令,但它们似乎很舒服,适合于分析操作或其他计算,否则我错了


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

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

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

这是MongoDB的一个亮点,即您不必根据需要将新字段应用于整个模式,而是可以在用户输入数据时惰性地填充它

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

添加此字段的最佳方法是在控制台中或复制副本的主副本上(如果有,则仅在服务器上)写入循环,如下所示:

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

这是目前最好的方法,可以满足您的要求。

谢谢您的回复。事实是,即使我不需要,我也必须!我需要按这些新属性进行查询。@Adio MongoDB有一个动态模式,基本上这意味着,如果没有数据或字段不存在,则按这些字段进行查询不会产生错误,更简单的是,如果字段中没有数据,则只需重新输入null即可。就是这样!我不想返回null,我想要一个数据!如何迭代现有数据并添加任何我想添加的内容?这是MapReduce的任务还是其他机制的任务?