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

ste*_*els 10 ruby mongodb mongoid

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

Post.only(:title).find(id)
Run Code Online (Sandbox Code Playgroud)

然后我将查询结果作为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
Run Code Online (Sandbox Code Playgroud)

the*_*RON 15

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

Post.without(:_id, :body, "tags._id")
Run Code Online (Sandbox Code Playgroud)

这将仅返回您的所有帖子标题,以及所有嵌入标签,并且不会_id为帖子或标签返回任何字段.

我还注意到你已经field :tags, :type => Array在Post模型上定义了 - 我认为这是多余的.使用embeds_many自动为您填充的集合.