Mongoid:更改(重命名)foreign_key 名称而不丢失数据

Mongoid: Change(rename) foreign_key name without loosing data

我想更改关系的外键。假设我有一个 class:

class Car
  include Mongoid::Document
  field :model, type: String

  belongs_to :user, foreign_key: :random_key_id 
end

而且我的数据库中只有很少的 Car 实例。我想更改 car

用户的外键
class Car
  include Mongoid::Document
  field :model, type: String

  belongs_to :user, foreign_key: :owner_id
end

但是当我像上面那样更改定义时,数据库中的所有汽车都失去了与 .user 的连接。在 SQL 数据库中,我将只生成带有重命名列的迁移。如何在mongoid中解决?

您可以直接将 MongoDB 连接到 rename the field

所以启动你的 Mongo shell 和 运行 这个:

db.cars.update({}, {$rename:{"random_key_id":"owner_id"}}, false, true);

如果您不熟悉使用 Mongo shell 那么 start here.