存储在mongoDB中的Django nonrel相关字段不再存在于ObjectID中?

时间:2012-05-30 09:04:33

标签: mongodb pymongo django-nonrel

我使用MongoDB存在一个现有的Django nonrel应用程序。 看来对象的相关字段由ObjectID存储。例如,我有一个UserTrofile模型,它与OneToOneField的User对象相关。存储的对象数据如下:

{
    "_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值?

1 个答案:

答案 0 :(得分:1)

您之前使用的是哪个版本? - 需要知道django-nonrel / djangotoolbox版本。

似乎您可能需要手动迁移数据 - 但最好确定发生更改的修订版本以确保其不是瞬态更改。