我有两个参考集合,这两个集合共同使用。其中一个集合是用户,另一个集合是项目。
因此,用户可以将项目添加到项目集合中,然后称为监督员的用户类型可以向项目添加工作人员,并且项目ID保存到用户集合中,该集合引用了项目集合上的工作人员文档。
因此,实际上,当管理员从用户集合中删除监督员时,它会删除由监督员用户ID创建的所有项目,这些项目等于从用户集合中删除的addedBy文档。
所以我的问题是,当我执行此过程时,我需要删除与用户集合projectId相等的所有项目ID。它是一个数组,我尝试过多次,但是我找不到解决方案。我将提供为此项目创建的所有源代码。
用户集合
const userSchema = new Schema({
firstName: {
type: String
},
lastName: {
type: String
},
email: {
type: String
},
username: {
type: String
},
password: {
type: String
},
usertype: {
type: Schema.ObjectId,
ref: 'usertypes'
},
projectId: [{
type: Schema.ObjectId,
ref: 'projects'
}]
});
项目集合
const proSchema = new Schema({
projectName: {
type: String
},
description: {
type: String
},
addedBy: {
type: Schema.ObjectId,
ref: 'users'
},
staff: [{
type: Schema.ObjectId,
ref: 'users'
}]
});
以下是我尝试使用的查询语句,用于执行我上述提到的过程。
Users
.findByIdAndRemove({
_id: req.params.id
})
.then(function(){
Projects
.remove({
userId: req.params.id
})
.then(function(err, project){
if(err) throw err;
console.log(project.id)
Users
.update({}, {
$pull: {
projectId: project.id
}
}, function(){
res.json({
success: true,
message: "Deleted"
});
});
});
});