Монго запрос на удаление "\ n" из всех полей _index? - PullRequest
1 голос
/ 17 октября 2011

Я использую 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 (mongoid знает, как обрабатывать \ n без ошибок).

Ответы [ 2 ]

3 голосов
/ 15 декабря 2011

Вы искали это:

   db.activities.find({_index:/\n/}).forEach(function(obj) { obj._index = obj._index.replace(/\n/g, ' '); db.activities.save(obj);});
0 голосов
/ 18 октября 2011
...