Если вы ищете эту проблему, вы увидите, что ее спрашивают и ее решают много раз.
Пожалуйста, посмотрите на мой ответ на этот вопрос для получения дополнительной информации об этом, включая многие детали gory.
Проверьте Монгранс ... Я только что закончил читать об этом, и похоже, что вы ищете.
http://github.com/terrbear/mongrations
Ура! Kapslok
Клинт,
Вы можете написать код для выполнения обновлений, хотя кажется, что обновление записей на основе собственных полей не поддерживается.
В таком случае я сделал следующее и запустил его на сервере:
------------------------------
records = Patient.all()
records.each do |p|
encounters = p.encounters
if encounters.nil? || encounters.empty?
mra = p.updated_at
#puts "\tpatient...#{mra}"
else
mra = encounters.last.created_at
#puts "\tencounter...#{mra}"
end
old = p.most_recent_activity
p.most_recent_activity = mra
p.save!
puts "#{p.last_name} mra: #{old} now: #{mra}"
end
------------------------------
Один из вариантов - использовать операцию update
, чтобы обновить все ваши данные сразу. Множественное обновление - это новинка в разрабатываемых версиях, поэтому вам нужно будет использовать одно из них.
MongoDB - это база данных без схемы. Поэтому миграций нет. В самой базе данных не имеет значения, есть ли у объектов ключ: some_key или ключ: some_other_key в любое время.
MongoMapper пытается наложить некоторые ограничения на это, но, поскольку база данных настолько гибкая, у вас будет самостоятельно поддерживать эти ограничения. Если вам нужен ключ для каждого объекта, убедитесь, что вы запустили сценарий для обновления этих ключей на уже существующих объектах, или обработайте случай объекта, у которого нет этого ключа, когда вы их встретите.
Я сам довольно новичок в MongoDB, но, насколько я могу судить, из-за гибкости БД без схемы именно так вам нужно будет с этим справиться.
Готов поспорить, вы можете подключиться к Activerecord :: Miration, чтобы автоматизировать и отслеживать свои сценарии «миграции».
Вы можете попробовать это изобретение, которое я только что сделал, но на данный момент оно работает только с монгоидом и рельсами 3 (бета 3). http://github.com/adacosta/mongoid_rails_migrations . Когда он выйдет в финал, он будет обновлен до рельсов 3.