答えはスキーマを変更することです。
リレーショナルデータベースの使用履歴からドキュメントデータベースの開発に取り掛かるときに、多くの開発者が直面している罠に陥っています。MongoDBはリレーショナルデータベースではないため、そのように扱うべきではありません。
外部キーと完全に正規化されたデータについて考えるのをやめ、代わりに、各ドキュメントを可能な限り自己完結型に保ち、関連する関連データをドキュメントに最適に埋め込む方法を考える必要があります。
これは、関連付けも維持できないという意味ではありません。これは、必要な詳細のみを埋め込み、必要に応じて完全なレコードを照会する、このような構造を意味する場合があります。
var activitySchema = new mongoose.Schema({
event: {
_id: { type: ObjectId, ref: "Event" },
name: String,
private: String
},
// ... other fields
});
埋め込み戦略を再考すると、非常に クエリを簡素化し、クエリ数を最小限に抑えます。 populate
カウントが急速に増加し、データセットが大きくなるにつれて、これが問題になる可能性が非常に高くなります。