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