为什么我不能使用旧的_id格式获取Mongoid文档?

时间:2011-07-25 08:58:58

标签: ruby-on-rails-3 mongoid

我在Rails / Mongoid应用程序中有一个模型,我最初使用key: uid设置了一个键(其中:uid是一个属性)

我正在删除它,以便模型恢复使用默认的_id格式。但是现有的对象并没有反映出这种变化。

例如对于具有uid的对象:507,_id仍然是507.因此我可以使用Testobjects.where(_id: "507")

来检索它

但是,Testobjects.find("507")会返回BSON::InvalidObjectId: illegal ObjectId format

(使用BSON::ObjectId('507')会出现相同的错误)

所以现在我无法使用find检索旧对象(因为它没有识别它们的_id,我无法检索新的_id)

关于如何解决这个问题的任何想法?

1 个答案:

答案 0 :(得分:2)

您的旧密钥可能是字符串或整数,而不是BSON :: ObjectId实例。您可能需要编写一个使它们保持一致的迁移because earlier versions of Mongoid didn't typecast the id