【问题标题】:How do I exclude fields from an embedded document in Mongoid?如何从 Mongoid 的嵌入文档中排除字段?
【发布时间】:2011-06-21 00:20:43
【问题描述】:

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

【问题讨论】:

    标签: ruby mongodb mongoid


    【解决方案1】:

    您需要使用 Mongoid 的 without 方法。像这样的东西应该可以解决问题:

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

    这将只返回您所有的帖子标题,以及它们所有的嵌入标签,并且没有 _id 用于帖子或标签的字段。

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

    【讨论】:

    • 有效!感谢您的指点。我不知道我怎么忽略了那个方法!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多