【发布时间】:2017-01-22 09:34:06
【问题描述】:
所以,我在 MongoEngine 中建模的 MongoDB 中有两个文档(经典关系数据库示例)
class Person(Document)
name = StringField()
class Address(Document)
person = ReferenceField(Person)
city = StringField()
一个人可以有多个地址。我想迁移这些模型,使其成为新架构:
class Address(Document)
city = StringField()
class Person(Document)
name = StringField()
address = ListField(ReferenceField(Address))
这涉及在两个架构上设置和取消设置字段,此外还要确保将旧的 Address 条目迁移到正确的 Person 地址列表中。
在我看来,它会是这样的:
- 将字段设置为
Person - 对于每个
Address,通过附加ListField将其添加到正确的Person - 从
Address取消设置字段
这似乎是一个简单的示例,但解决方案足够简单,尽管 mongoengine 的实现已经让我想了一段时间。
通过更改 python 中的类,服务器崩溃并抱怨fields cannot be resolved。重新排序类也是一个问题,因为类依赖于彼此切换。除此之外,MongoDB 中的集合需要更新。
我记得 SQLAlchemy 有很好的迁移支持,但是对于 Flask + MongoEngine,我没有找到类似的东西。
有人知道这个的好方法吗?
【问题讨论】:
标签: python mongodb flask migration mongoengine