【问题标题】:How can I turn a mongoid document into JSON stripping out embedded document ids, but keeping the main document id?如何将 mongoid 文档转换为 JSON,去除嵌入的文档 ID,但保留主文档 ID?
【发布时间】:2015-05-23 00:13:07
【问题描述】:

我有一个包含一些嵌入文档的文档(其中一些还有进一步的嵌入文档)。

我想以 JSON 格式返回文档内容,但不包含嵌入文档的所有 ID。

我可以这样做:mydoc.to_json(:except => :_id) 但这会删除所有 BSON ID,包括 mydoc 的 ID。

是否有其他方法可以去除嵌入的文档 ID?

【问题讨论】:

    标签: ruby json mongoid


    【解决方案1】:

    请记住,to_json 这里实际上是两个步骤:

    1. 致电as_json 获取哈希。
    2. 将该哈希转换为 JSON 字符串。

    所以你可以使用as_json而不是to_json来构建一个没有任何_ids的Hash,然后把你关心的_id放回去,最后转换成JSON:

    mydoc.as_json(:except => :_id).merge('_id' => mydoc.id).to_json
    

    【讨论】:

    • 是的,这就是我自己最终想出的。我认为可能会有一个更好的选择,但这有效。谢谢!
    • 是的,我一直在寻找某种明确的“创建集合”,但似乎 Mongoid 和 Moped 想要创建集合作为初始插入或创建索引的副作用。
    • 我做了一个有趣的改变...我从小哈希开始,以便首先获得 ID:{"_id" => mydoc.id).merge(mydoc.as_json(except: " _id").to_json 这将 ID 字段放在哈希的前面(这并不重要,但在查看数据时看起来更好)
    • 这将更接近于普通的to_json 给你的内容,并且可能更具可读性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2012-02-18
    相关资源
    最近更新 更多