You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rails的Only查询中包含嵌入式Document文档?

解决方案:在Mongoid 3中查询包含嵌入文档的指定字段

嘿,针对你遇到的这个Mongoid查询问题,我来给你详细说下怎么解决~

你原来的代码用only方法限制了Claim模型返回的顶级字段,但因为Document是嵌入在Claim里的(embeds_many :documents),它本质上是Claim文档的一个数组字段,所以只要把这个嵌入字段的名称加到only的参数列表里,就能把关联的Document数据一起查出来了。

修改后的代码如下:

@claims = @claims.only(:nice_id, :brand_id, :status, :documents).desc(:_id)

额外优化:只获取嵌入文档的部分字段

如果不需要每个Document的所有字段,Mongoid 3还支持嵌套的字段选择,这样能进一步减少查询返回的数据量。比如你只需要Document的name和file_url字段,可以这么写:

@claims = @claims.only(:nice_id, :brand_id, :status, 'documents.name', 'documents.file_url').desc(:_id)

原理很简单:Mongoid的only方法可以接受顶级字段名,也可以通过点语法指定嵌入文档的特定字段,这样MongoDB只会返回你指定的这些字段,既满足列表展示需求,又能拿到需要的嵌入文档数据。

内容的提问来源于stack exchange,提问作者Anand Jose

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:13:35