我有一个包含嵌入标签的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
答案 0 :(得分:14)
您需要使用Mongoid的without
方法。这样的事情可以解决问题:
Post.without(:_id, :body, "tags._id")
这将仅返回您的所有帖子标题,以及所有帖子或标签的所有嵌入标签和_id
字段。
我还注意到你在Post模型上定义了field :tags, :type => Array
- 我认为这是多余的。使用embeds_many
设置为您自动填充。