1

我正在开发一个 Ruby on Rails (3.2.6) 应用程序并使用 MongoId (3.0.0) 与 MongoDB 数据库进行交互。我只是想知道如何保存包含多个级别而不仅仅是一个级别的嵌入 JSON 对象。

我得到了一个具有这种结构和类似结构的旧 MongoDB 数据库,因此我需要使用相同的结构保存新文档。

这来自文档,用于添加一级文档:

Person.create(
  first_name: "Heinrich",
  last_name: "Heine"
)

如何添加具有此结构的对象:

{
    "basic": {
        "file_id": {
            "file": "cf1952761a806c56c9bee60665418f02c"
        },
        "share": false,
        "status": "created"
    },
    "data": {
        "id": "4fd942dder5f5e88837300026e",
        "name": "roberta",
        "comment": "This is a comment"
    }
}
4

1 回答 1

2

最简单的方法是创建类basic并将data它们嵌入到您的顶级文档中。

嵌入式文档类在 Mongoid 中的定义方式与其他具有embedded_in调用和匹配的文档embeds_oneembeds_many在顶级文档中的方式相同。

另一种选择是简单地定义一个 Hash 字段,但这显然可以具有任何结构。

Class Person
    include Mongoid::Document

    field :data, :type => Hash

    ...
end

:data将接受任何散列,即使是嵌套散列。

于 2012-06-18T08:23:24.927 回答