2011-07-15 18 views
1

私はJavaプログラマーであり、プロジェクトでMongoDBを使用したいと思います。私はMongoDBがドキュメントデータベースであることを知っていますが、このデータベースにレコード用のフィールドをさらに格納する方法はありますか?MongoDBにリレーショナルデータベース構造を格納することはできますか

たとえば、私は4つの属性(すなわち列)の名前アドレスの年齢とdobを持つテーブルを持っていますので、この構造体をMongoDBに合わせて使用​​または変換できますか?

+0

**モデレーター注**この質問のコメントは、会話が信号よりもはるかにノイズに強くなったため削除されました。コメントは丁寧で、建設的で、トピックに残してください._ –

答えて

7

もちろんです。

MongoDBは、文書ベースのデータベース管理システムです。 JSONフォーマットに精通している場合、Mongoはデータを非常に似た方法で保存します。あなたはMongoのは、ネストされたフィールドをサポートして見ることができるように、その特定のフィールドは、1つ以上の属性を含めることができ

Person { 
    Name: 
    { 
     First : "John" 
     Last : "Smith" 
    } 
    Address : 
    { 
     City : "Chicago" 
     State : "Illinois" 
     Street : "30 S. Michigan Avenue" 
    } 
} 

:たとえば、モンゴ・データベースのサンプル文書は次のようになります。ドキュメント広告の無限をネストすることが可能であるため、キー/値そのものではありません。ただし、コレクション内のすべてのドキュメントが同じ構造を持つ必要はないことに注意してください。これはモンゴーの最大の強みですが、気をつけなければ回って噛むことができます。ただ、前の二つのポスターから正しい(1)の回答に追加する

+0

ありがとうございます。 AGPLを強制しないMongoDBの他の選択肢を知っていますか? – Vivek

+2

MongoDBデータベースサーバ自体はAGPLの下でライセンスされているため、MongoDBデータベースコードを変更した場合は、変更をメインコードベースに戻す必要があります。 [Javaドライバ](https://github.com/mongodb/mongo-java-driver/blob/master/LICENSE.txt)を含むすべての公式ドライバは、Apache License 2.0でライセンスされています。 – dcrosta

1

実際、MongoDBは従来のキー/バリューデータベースではなく、ドキュメントデータベースです。ドキュメントは、任意の数のフィールド、またはネストされたドキュメントを含むことができるJSONオブジェクトです。はい、レコードごとに複数のフィールドを簡単に保存できます。

3

...

あり、「リレーショナルデータベース構造」の違いだと追加の属性を保存します。リレーショナルとは、顧客や各顧客が持っている注文など、データベース内の物間の関係をモデリングしていることを意味します。

MongoDBでは、多くの属性を持つドキュメントを格納できます。ドキュメント間の関係を管理するための多くのサポートは提供していません。

+0

MongoDBでは、公式のドライバ(およびコミュニティが提供する多くのドライバ)が参照する文書を調べるための解釈方法を知っている[データベース参照](http://www.mongodb.org/display/DOCS/Database+References)を使用することができます。ただし、データベース自体はDBRefを処理しません(つまり、JOINingはありません)。 – dcrosta

関連する問題