0

MongoDB データベースに 2 つのコレクションがあります。

  1. クラブ コレクション
  2. 写真集。

それらのスキーマは次のとおりです。


var clubsSchema = new Schema({
  clubName: { type: String },
  photosOfMembers: [{ type: ObjectId, ref:'Photos' }],
});

var photosSchema = new Schema({
  sourceUrl: { type: String },
  filePath: { type: String },
  description: { type: String }
});

私たちの学校にはたくさんのクラブがあります。写真は学生のプロフィール写真です。一部の学生は複数のクラブに所属しているため、複数のクラブが 1 枚の写真を参照できます。

これらの写真は、外部の Web サイト (Facebook、Reddit、Quora など) から取得され、データベースに記録され、サーバーに保存されたファイルになります。

生徒がクラブに参加するたびに、外部の Web サイトから生徒の写真をクロールします。photosSchema.sourceUrl を使用して、写真がデータベースに存在するかどうかを確認し、存在しない場合は保存します。これにより、1 人の生徒に属する画像が重複する状況を防ぐことができます。

これはうまくいきます。

問題は、学生がクラブを離れたときに発生します。


  • 問題:

その生徒がクラブのメンバーでなくなったら、その生徒の写真を削除したいです。彼/彼女がクラブに所属している場合、写真は残ります。

私のデータベースには何千ものレコードがあります-これを行うための最良の(最も効果的/効率的な)方法は何ですか.

4

1 に答える 1

0
  1. 彼/彼女がクラブを去るとき、あなたはクラブコレクション権を更新しなければなりません。そのため、クラブ コレクションを更新する際に、その学生の写真のオブジェクト ID を取得できます。同じオブジェクト ID が他のクラブにマップされていない場合は、クラブ コレクションを検索し、そのドキュメントを写真コレクションから削除できます。

  2. 私が考えることができる2番目の方法は、ルックアップを使用することです。しかし、最初のものはより単純なようです

于 2020-09-23T19:42:03.570 に答える