Ruby on rails Mongoid:为符合选项的对象中嵌入的_返回不同的值
我有两节课Ruby on rails Mongoid:为符合选项的对象中嵌入的_返回不同的值,ruby-on-rails,ruby,mongodb,mongoid,Ruby On Rails,Ruby,Mongodb,Mongoid,我有两节课 class Claim include Mongoid::Document embeds_many :claim_fields belongs_to :user ... end class ClaimField include Mongoid::Document embedded_in :claim field :title field :value ... end 我需要通过db(不是Ruby,它对于数千条记录来说太慢了)获取索赔_字段的所有
class Claim
include Mongoid::Document
embeds_many :claim_fields
belongs_to :user
...
end
class ClaimField
include Mongoid::Document
embedded_in :claim
field :title
field :value
...
end
我需要通过db(不是Ruby,它对于数千条记录来说太慢了)获取索赔_字段的所有唯一值以及索赔的当前标题
我已经试过了
user = User.find(...)
Claim.collection.distinct("claim_fields.value", {:user_id => user.id, "claim_fields.title" => some_title})
# that is the same as user.claims.find(...).distinct("claim_fields.value")
但它会返回所有claim_字段的值,我需要它只返回我需要的标题为claim_字段的值
PS看起来这里需要一些MapReduce这里的基本问题是MongoDB查询只返回整个文档。您正在筛选
claim_字段。title
,但系统将返回所有匹配的claim
文档
您正在执行一个不同的,但MongoDB对待子对象和文档的方式不同。因此,distinct
可能没有按您的要求执行
这里有两种可能的解决方案:
关于#2,没有嵌入对象的要求。应根据您计划执行的查询执行嵌入。因此,如果这是一个常见的查询,那么创建这些单独的文档是公平的。问题是,起初不需要通过嵌入式对象进行查询,但现在我们需要它