我有一个使用 MongoDB 的现有 Django nonrel 应用程序。似乎对象的相关字段是由 ObjectID 存储的。例如,我有一个 UserProfile 模型,它与 OneToOneField 的用户对象相关。存储的对象数据如下:
{
"_id": {
"$oid": "4f67540040e0460001000001"
},
"user_id": {
"$oid": "4f67540040e0460001000000"
},
....
}
我在 Heroku 上部署了应用程序,它使用 git 存储库来获取 django nonrel 项目和 django-mongodb-engine。我使用的pymongo版本是2.1.1。我不确定由于哪个库的更新,我发现相关字段似乎不再由 ObjectId 存储。新对象数据的存储方式如下:
{
"_id": {
"$oid": "4f67540040e0460001000001"
},
"user_id": "4f67540040e0460001000000",
....
}
问题是由于数据格式不一致而导致错误。不仅我无法获取先前存储的对象的相关对象(获取“DoesNotExist:UserProfile 匹配查询不存在。”)。Piston 也无法获取新保存对象的相关对象。
我尝试将修订说明符添加到 requirements.txt 中的 git 存储库 URL,但没有运气,这很奇怪。
有谁知道发生了什么?也许我必须做一个 mongoDB 数据更新来修复那些相关的数据 id 值?