如何将对象映射到Mongoid中的文本搜索中的原始数据?

时间:2013-12-19 15:50:34

标签: ruby-on-rails ruby mongodb mongoid

当我使用我的应用程序搜索文本时,它会返回一个像这样的哈希值,但是结果都是原始哈希值。

{"queryDebugString"=>"xxx||||||", "language"=>"english", "results"=>[{"score"=>1.1, "obj"=>{"_id"=>BSON::ObjectId('52b308a85a686916c9410000'), "_type"=>"Note", "occurred_on"=>2013-12-19 00:00:00 UTC, "title"=>"xxx", "type"=>"other", "description"=>"yyy zzz"}}], "stats"=>{"nscanned"=>1, "nscannedObjects"=>0, "n"=>1, "nfound"=>1, "timeMicros"=>57}, "ok"=>1.0}

如何在结果上映射模型对象?目前我使用的是.new方法,但#persisted?是假的。

def self.search(text)
  mongo_session.command(text: collection_name.to_s, search: text.to_s, filter: all.selector)['results'].map { |row| new row['obj'] }
end

2 个答案:

答案 0 :(得分:0)

your_data = JSON.parse(text)

它返回一个哈希值。

YourObject.new(your_data)

它使用字符串

提供的所有数据构建所需对象

答案 1 :(得分:0)

我只是通过为新模型的@persisted分配true来解决这个问题。