Я использую mongomapper с моим приложением rails. Это ошибка всякий раз, когда запись монго имеет «\ n» в «_index» или любом из полей.
SyntaxError: (eval):1: синтаксическая ошибка, неожиданное '\n', ожидание tCOLON2 или '.' (eval):3: синтаксическая ошибка, неожиданное ключевое слово_end, ожидание $end
Причина, по которой поля имеют «\n», заключается в том, что данные были очищены и не очищены должным образом.
Например, это одно из проблемных полей:
ruby-1.9.2-p180 :004 > Activity.where(:_index => /\n/i).first["_index"]
=> "Heating Building\n\nAir Emissions"
Чтобы исправить это в ruby (mongoid), это будет в основном:
Activity.where(:_index => /\n/i).each do |a|
a.update_attribute(:_index, a[:_index].gsub("\n", " "))
end
Есть ли способ исправить это, просто используя запрос монго?
Запрос монго должен будет пройти через каждую строку монго и заменить «\n» на «» в поле _index.
Причина, по которой я спрашиваю, заключается в том, что у нас нет времени переместить наше приложение с mongomapper на mongoid (монгоид знает, как обрабатывать \n без ошибок).
find_eachи стандартное изменение/сохранение вместо update_attribute. Однако обратите внимание, что если документы становятся больше, когда вы их сохраняете, вы можете вернуть некоторые документы дважды mongodb.org/display/DOCS/ - person Brian Hempel   schedule 18.10.2011