我正在使用mongomapper和我的rails应用程序。只要mongo条目在“_index”或任何字段中有“\ n”,它就会出错。
SyntaxError:(eval):1:语法错误,意外'\ n',期待 tCOLON2或'。' (eval):3:语法错误,意外的keyword_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
有没有办法只使用mongo查询来解决这个问题?
mongo查询需要遍历每个mongo行,并在_index字段中将“\ n”替换为“”。
我问的原因是我们没有时间将我们的应用程序从mongomapper移动到mongoid(mongoid知道如何处理\ n而不会出错)。
答案 0 :(得分:3)
您正在寻找:
db.activities.find({_index:/\n/}).forEach(function(obj) { obj._index = obj._index.replace(/\n/g, ' '); db.activities.save(obj);});
答案 1 :(得分:0)