如何将 mongoid 文档变成 JSON 剥离嵌入文档 ID,但保留主文档 ID?

How can I turn a mongoid document into JSON stripping out embedded document ids, but keeping the main document id?

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

我想 return 文档内容 JSON 但没有嵌入文档的所有 ID。

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

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

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

  1. 调用 as_json 获取哈希。
  2. 将该散列转换为 JSON.
  3. 的字符串

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

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