【问题标题】:Create a nested document with Mongoid使用 Mongoid 创建嵌套文档
【发布时间】:2014-06-25 11:22:58
【问题描述】:

我是 Ruby 和 Mongoid 的新手,我需要一些帮助来创建模型和建模文档。

这是文档必须具有的结构

{
  key1 : "value",
  key2 : "value",
  key3 : {
    key3.1 : "value",
    key3.2 : [array]
  },
  key4 : {
    key4.1 : "value",
    key4.2 : [
      {
       "key4.2.1" : "value",
       "key4.2.2" : "value",
       "key4.2.3" : "value",
       "key4.2.4" : [
          "key4.3.1"  : "value",
          "key4.3.1" : "value",
        ]
      },
      ...
    ]
  } 
}

我的模型看起来像这样:

class Model
  include Mongoid::Document
  field :key1, type: Integer
  field :key2, type: Integer
  field :key3, type: Hash
  field :key4, type: Hash
end

可以用 MongoId 制作这个结构吗? 我知道我的模型不正确且不完整。

【问题讨论】:

  • 我认为字段名称中不能有点。
  • 只是一个例子,并不是真正的命名。这些键和那些值只是为了最短的例子
  • 我想除了looking at the documentation,人们还想知道你在问什么。也许您应该看一下,然后可能对您不理解的内容重新表述您的问题,或者如果您学到了一些东西,那么这可能不是一个需要别人回答的问题,您可以将其删除。

标签: mongodb model mongoid


【解决方案1】:

我不确定你的意思 key4.2.4 是一个具有键值的数组,但 Mongoid 会按照定义保存你的对象。

使用简化模型:

class Model
  include Mongoid::Document
  field :key1, type:Integer
  field :key2, type:Hash
end

你可以这样锻炼:

m = Model.new
m.key1 = 12
m.key2 = {a: 1, b:[{c: 2, e: [23,34]}]}
m.save

Model.first
=> #<Model _id: 53ab8ed1cac11f4c94000004, key1: 12, key2: {"a"=>1, "b"=>[{"c"=>2, "e"=>[23, 34]}]}>

因此您可以看到所有嵌入的哈希和数组都保存到 MongoDB 并由 Mongoid 检索,没有任何问题。

也可以使用嵌入文档(包含在其封闭文档中的另一个 Mongoid 文档)或相关文档,其中相关文档的密钥存储在父文档中。如果您想这样做,http://mongoid.org/en/mongoid/docs/relations.html 的文档应该会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多