1

Ruby on Rails (3.2.6) アプリケーションを開発しており、MongoId (3.0.0) を使用して MongoDB データベースとやり取りしています。1 つのレベルだけでなく、複数のレベルを含む埋め込み JSON オブジェクトをどのように保存するのか疑問に思っています。

これと類似の構造を持つ古い MongoDB データベースを取得したので、同じ構造を使用して新しいドキュメントを保存する必要があります。

これはドキュメントからのもので、1 レベルのドキュメントを追加するために使用されます。

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

これを行う最も簡単な方法は、 および のクラスを作成basicdata、最上位ドキュメントに埋め込むことです。

埋め込みドキュメント クラスは、他のドキュメントと同じ方法で Mongoid で定義されます。これは、embedded_in呼び出しと一致するドキュメント、embeds_oneまたはembeds_many最上位ドキュメントで行われます。

もう 1 つのオプションは、単純に Hash フィールドを定義することですが、これには明らかに任意の構造があります。

Class Person
    include Mongoid::Document

    field :data, :type => Hash

    ...
end

:dataネストされたハッシュであっても、任意のハッシュを受け入れます。

于 2012-06-18T08:23:24.927 に答える