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

时间:2011-06-21 00:20:43

标签: ruby mongodb mongoid

我有一个包含嵌入标签的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

1 个答案:

答案 0 :(得分:14)

您需要使用Mongoid的without方法。这样的事情可以解决问题:

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

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

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