我正在开发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"
}
}
答案 0 :(得分:2)
最简单的方法是为basic
和data
创建类,并将它们嵌入到顶级文档中。
嵌入式文档类在Mongoid中的定义方式与在embedded_in
调用以及顶级文档中匹配embeds_one
或embeds_many
的其他文档相同。
另一种选择是简单地定义一个Hash字段,但这显然可能有任何结构。
Class Person
include Mongoid::Document
field :data, :type => Hash
...
end
:data
将接受任何哈希,即使使用嵌套哈希也是如此。