如何从Mongoid中的嵌入文档中排除字段?

我有一个包含嵌入标签的Post文档。 有时我只显示post的标题及其标签。 在这些情况下,我在mongoid中使用以下查询:

Post.only(:title).find(id) 

然后我将查询结果作为json发送给客户端。 不幸的是,标签的bson id使得json比我需要的大得多。 如何从查询中排除“_id”字段?

这是我的模特:

 class Post include Mongoid::Document field :title, :type => String field :body, :type => String field :tags, :type => Array embeds_many :tags end class Tag include Mongoid::Document field :tag, :type => String field :type, :type => String embedded_in :post end 

你需要使用without方法的Mongoid。 像这样的东西应该做的伎俩:

 Post.without(:_id, :body, "tags._id") 

这将仅返回您的所有post标题,以及所有post或标签的所有嵌入标签和_id字段。

我还注意到你有post field :tags, :type => Array在Post模型上定义的field :tags, :type => Array – 我认为这是多余的。 使用embeds_many会自动设置为您embeds_many字段。