GrailsのMongoDBプラグインが関係をどのように処理するのか不思議でした。これをテストするために、私は2つのドメインクラスで非常に簡単なアプリケーションを作っ:MongoDB、Grails、および関係
Author
の二つのフィールドを持っている:MongoDBのを設定した後String title
とAuthor author
:String firstName
とString lastName
Book
のは次の2つのフィールドを持っていますGrails私はAuthor
とBook
を作って、MongoDB対話シェルを使って覗いてみました。私が見つけたのは、関係はリレーショナルデータベースで扱うのと同じ方法で処理されていたということです。他のオブジェクトのIDフィールドへの参照です。質問のために今そう
:
- GORMがこれをやってのけるようにするためには、それが各ドキュメントを取得するために、個別の接続が必要なのですか?
- もしそうなら、これはPostgreSQLやMySQLのようなリレーショナルデータベースではうまくいかないでしょうか?
- 上記の2つの質問に対する回答が本当に「はい」の場合、MongoDBなどの文書データベースで関係を管理する方が良いでしょうか?私はMongoDBがリレーショナルであるとは考えていませんが、データを複製せずに関係を取り戻す方法がないので、悪夢を更新してしまうことがあります。
編集:私もちょうどGrailsのが私の著者の「ID」プロパティに適切にソートされていないことに気づきました。これはMongoDBの使用と関係がありますか?シェルでは、Grailsによって作成されたすべてのドキュメントの_idプロパティがデータ型がNumberLong
であることがわかります。