我的MongoDB数据库中有两个集合:
它们的模式如下:
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 }
});
我们学校有 很多 个俱乐部。 这些照片是学生的个人资料照片。 有些学生属于 多个 俱乐部,因此,多个俱乐部可以引用一张照片。
这些照片是从外部网站(例如Facebook,Reddit,Quora)中获取的,记录在数据库中,文件存储在服务器中。
每次学生加入俱乐部时,我们都会从外部网站抓取他们的照片。 我们使用photosSchema.sourceUrl来检查照片是否存在于我们的数据库中,然后将其存储(如果不存在)。 这有助于我们避免出现重复图像属于一个学生的情况。
这很好。
问题出在学生离开俱乐部时。
- 问题:
当那个学生不再是任何俱乐部的成员时,我想删除他/她的照片。如果他/她属于某个俱乐部,则保留照片。
我的数据库有成千上万条记录-什么是最好的(最有效/最有效)的方法。
答案 0 :(得分:0)
他/她离开俱乐部时,您必须更新俱乐部的收藏权。因此,在更新clubs集合时,您可以获取该学生照片的对象ID。然后,如果相同的对象ID没有映射到其他俱乐部,则您可以在俱乐部收藏中搜索,然后从照片收藏中删除该文档。
我能想到的第二种方法是使用查找。但是第一个似乎更简单