【发布时间】:2011-10-17 15:32:52
【问题描述】:
我将 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 而不会出错)。
【问题讨论】:
-
您编写的代码也应该在 MongoMapper 中工作,使用
find_each和标准更改/保存而不是 update_attribute。尽管请注意,如果保存文件时文件变大,您可能会得到一些文件两次mongodb.org/display/DOCS/…
标签: mongodb mongoid mongomapper