我正在使用mongomapper與我的rails應用程序。只要mongo條目在「_index」或任何字段中有「\ n」就會出錯。Mongo查詢從所有_index字段中刪除「 n」?
SyntaxError: (eval):1: syntax error, unexpected '\n', expecting tCOLON2 or '.' (eval):3: syntax error, unexpected keyword_end, expecting $end
原因的領域有「\ n」是因爲數據被刮掉並沒有適當清洗。
例如因爲這是問題的領域之一:
ruby-1.9.2-p180 :004 > Activity.where(:_index => /\n/i).first["_index"]
=> "Heating Building\n\nAir Emissions"
要紅寶石(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。儘管請注意,如果文檔在保存文檔時變大,可能會返回兩次文檔http://www.mongodb.org/display/DOCS/How+to+do+Snapshotted+Queries+in+the+Mongo+Database –