2011-06-21 62 views
9

我有一个包含嵌入标签的Post文档。有时我只显示帖子的标题及其标签。在这些情况下,我在mongoid中使用以下查询:如何从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 

回答

12

你需要使用Mongoid的without方法。这样的事情应该做的伎俩:

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

这只会返回所有的文章标题,以及他们所有的嵌入式标签以及针对帖子或标签不_id领域。

我还注意到您的邮政模型中定义了field :tags, :type => Array--我认为这是多余的。使用embeds_many会自动设置该字段。

+0

它的工作原理!感谢指针。我不知道我是如何忽视这种方法的! – stevendaniels

+0

究竟是我在找什么,thx! – 23tux