あなたの編集からの追加情報があっても、判断するのは難しいです。私たちはあなたが何を達成したいのかを知る必要があります。私が何を意味するのかを説明するための2つのオプションを紹介します。それから、自分にとって何が正しいかを推測できると思います。
元。A:ある種のイエローページのWebサイトを構築しています
たとえば、企業とそのクライアントの一部を、その作業のサンプルとともに一覧表示するWebページを作成するとします。データは主に読み取られます。情報を変更できるのは、ログインして一部のデータを変更できる顧客(それぞれの会社の従業員)だけです。変更はあまり頻繁に発生せず、バージョンの競合はありません。
その場合、埋め込みは問題ありません。おそらくその情報を一緒に表示したいので、情報の量はキラーではなく、ライターは1人だけです。
元。B:SaaSプロジェクト管理ソリューションを構築しています
会社の従業員は、ログインしてクライアントを管理し、ユーザーを追加または削除し、プロジェクトテンプレートを作成/読み取り/更新/削除(CRUD)することができます。多くの人が同時にログインできます。
company_templates_items
その場合、おそらく埋め込まれるべきである場合を除いて、上記のどれもありません。
ガイドラインとして、次のことを考慮してください。コレクションアイテムがさまざまなユーザーによってCRUD操作を受ける可能性があり、さまざまなオブジェクトを(ビジネス上の意味で)問題なく同時に編集できる場合は、埋め込みを行わないでください。たとえば、Janeが顧客を編集し、Mikeが新しいプロジェクトを作成している間に、Jimが新しい顧客を追加しても問題はありません。これらすべての操作を同じオブジェクトに書き込む必要がある場合は、コードで非常に注意して、2回失われたり、上書きされたり、追加されたりしないようにする必要があります。
$push
、などを使用してこれらの操作をアトミックにすることもできます$pull
が、並べ替え、検索、更新はより複雑です。一般に、コレクションには、埋め込まれたドキュメントよりも多くの機能があります。