使用Mongoid(3.1.6) 我有一个包含以下字段的集合:
field :project, type: String
field :date_hierarchy, type: Hash, default: {year: 0, semester: 0, quarter: 0, month: 0, day: 0}
我想找到一个包含项目的文档:“1”,date_hierarchy:{year:2013,semester:2,quarter:4,month:11,day:12} 如果找不到文件,我希望它被创建 我怎样才能做到这一点? 我试过这些,而不是他们的工作
MyModel.where(:project=>"1", "date_hierarchy.year"=>2013, "date_hierarchy.semester"=>2, "date_hierarchy.quarter"=>4, "date_hierarchy.month"=>11, "date_hierarchy.day"=>25).first_or_create!
MyModel.where(:project=>"1", "date_hierarchy.year"=>2013, "date_hierarchy.semester"=>2, "date_hierarchy.quarter"=>4, "date_hierarchy.month"=>11, "date_hierarchy.day"=>25).find_or_create_by("date_hierarchy.year"=>2013, "date_hierarchy.semester"=>2, "date_hierarchy.quarter"=>4, "date_hierarchy.month"=>11, "date_hierarchy.day"=>25).
答案 0 :(得分:3)
您需要将date_hierarchy值作为哈希值传递,就像传递给new()
或create()
一样:
MyModel.find_or_create_by({
project: '1',
date_hierarchy: {year: 2013, semester: 2, quarter: 4, month: 11, day: 25}
})