MongoDB スキーマを設定するためのちょっとしたガイダンスを探しています。シナリオは次のとおりです。
私は人々のための保存ブックマーク機能を作成しています。DB に保存する必要があるのは、ユーザー名、タイトル、およびリンクだけです。このことから、JSON を出力し、特定のブックマークまたはユーザーのフィード全体を照会するサービスを作成する必要があります。実装とパフォーマンスの両方の観点から、2 つの設定のうちどちらがより理にかなっていますか?
A) 各ブックマークは独自のオブジェクトです。
{
"_id": ObjectId("abcd1234"),
"username": "Choy",
"title": "This is my first link",
"url": "http://www.google.com"
},
{
"_id": ObjectId("abcd1234"),
"username": "Choy",
"title": "This is my second link",
"url": "http://www.bing.com"
}
B) 各ユーザーは独自のオブジェクトです。
{
"_id": "Choy",
"bookmarks": {
"abcd1234": {
"title": "This is my first link",
"url": "http://www.google.com"
},
"abcd12345": {
"title": "This is my second link",
"url": "http://www.bing.com"
}
}
}
特定のブックマークを簡単に照会、更新、および削除できるので、最初は (A) の方が理にかなっていました。しかし、アプリケーションの観点からは、(B) 個人のすべてのブックマークを一覧表示したい場合は、aを実行findOne(username)
し_id
た後に各レコードを反復処理してfind(username)
配列に変換し、次にJSON(これは少しメモリ集約的だと思います)。
一方、(B) で新しいブックマークを追加するには、レコードを取得し、新しいブックマークをプッシュして保存する必要があるため、余分な手順になります。