Ruby on rails 使用mongodb更新模型时如何修复记录

Ruby on rails 使用mongodb更新模型时如何修复记录,ruby-on-rails,mongodb,mongoid,Ruby On Rails,Mongodb,Mongoid,我有一个使用mongodb的rails项目,我遇到的问题是当我有以前模型的记录(文档)时。(我得到了klass错误,只是为了旧记录) 有没有一种快速的方法可以通过rails,使用一些命令来修复这些mongodb文档 或者,我可以使用mongoid运行一个命令,让它在mongo中打开特定的模型,然后我可以手动拨动文档(删除不必要的关联)。模式迁移的概念需要存在于mongoid中,我认为它不存在。如果您做了一些简单的更改,比如重命名或删除字段,那么您可以使用update语句轻松地完成这些更改,但对于

我有一个使用mongodb的rails项目,我遇到的问题是当我有以前模型的记录(文档)时。(我得到了klass错误,只是为了旧记录)

有没有一种快速的方法可以通过rails,使用一些命令来修复这些mongodb文档


或者,我可以使用mongoid运行一个命令,让它在mongo中打开特定的模型,然后我可以手动拨动文档(删除不必要的关联)。

模式迁移的概念需要存在于mongoid中,我认为它不存在。如果您做了一些简单的更改,比如重命名或删除字段,那么您可以使用update语句轻松地完成这些更改,但对于任何更复杂的更改,您都需要编写代码

由于映射层不再兼容,您需要编写的代码很可能需要转到驱动程序级别来更改对象

一般来说,在对象中进行模式更改时需要小心,因为服务器没有这个概念,也不能强制执行它们。维护兼容性最终取决于您的代码或您正在使用的框架


从映射层的角度来看,如果映射系统而不进行批量升级以保持模式不变,这通常是一个问题。

您必须编写mongo查询来更改需要更改的文档。mongodb中没有模型这类东西,它纯粹是由您正在使用的某个应用程序库在上面分层的抽象。不要通过MongoShell修改文档,它会错误地处理数据类型: