更改 mongoDB/mongoose 中的模式
Posted
技术标签:
【中文标题】更改 mongoDB/mongoose 中的模式【英文标题】:Changing schemas in mongoDB/mongoose 【发布时间】:2011-11-25 01:15:08 【问题描述】:我开始使用 mongoDB 和 mongoose。我想知道人们如何管理不断发展的模式。例如,如果我从这样的架构开始:
user_ID : 123,
user_firstName : 'bob',
user_lastName : 'smith'
然后进化成这样:
user_ID: 123,
user_name: [first:'bob', last:'smith']
如何更新或管理使用旧架构设计建立的旧记录?
【问题讨论】:
【参考方案1】:迁移涉及简单数据转换的文档架构的一种方法是使用$exists 查找缺少新字段的文档并迁移它们。
例如,将 firstName 和 lastName 转换为新的 user_name 字段:
db.mycollection.find( user_name : $exists : false ).forEach(
function (doc)
doc.user_name = 'first': doc.user_firstName, 'last': doc.user_lastName;
// Remove old properties
delete doc.user_firstName;
delete doc.user_lastName;
// Save the updated document
db.mycollection.save(doc);
)
对于更复杂的迁移,一些可能有用的工具是:
schema.js 或 variety 用于分析集合的当前架构 JSV: JSON Schema Validator 用于验证文件【讨论】:
以这种方式删除属性对我不起作用。我需要使用这样的东西db.mycollection.update(, $unset: user_firstname: 1, user_lastname: 1 , multi: true )
以上是关于更改 mongoDB/mongoose 中的模式的主要内容,如果未能解决你的问题,请参考以下文章