Document と author コレクションがあるとします。次の 2 つの方法で設計できます。
最初の方法:
documents
{_id:1, title:"document 1", author:"John", age: 34}
{_id:2, title: "document 2", author: "Maria", age:42 }
{_id:3, title: "document 3", author: "John", age: 34}
authors
{_id:1, name:"John", age:34}
{_id:2, name:"Maria", age:42}
2 番目の方法:
documents
{_id:1, title:"document 1", id_author:1}
{_id:2, title: "document 2", id_author: 2}
{_id:3, title: "document 3", id_author: 1}
authors
{_id:1, name:"John", age:34}
{_id:2, name:"Maria", age:42}
ドキュメントを取得するときに結合をシミュレートする必要がないため、最初の方法は適切です。ドキュメント コレクションにすべてのデータがあります。しかし一方で、マリアの年齢を変更する必要がある場合は、両方のコレクションで行う必要があります。
2番目の方法は逆です。ドキュメントとその作成者の年齢が必要な場合は、最初にドキュメントをクエリし、次に作成者をクエリする必要があります。しかし良いことは、Maria の年齢を変更しなければならないときに、著者のコレクションで変更するだけでよいということです。
それで、どの解決策がより良いですか?著者コレクションに必要なフィールドが多いほど、2 番目の方法を使用する可能性が高くなると思います。しかし、最初の方法を使用している場合、両方のコレクションでマリアの年齢を更新するために使用できる単一のクエリはありますか?
最も使用されているソリューションはどれですか?