我目前正在创建一个应该管理不同人群的Web服务。因此,我创建了一个Customer-Schema,MongoDB中的每个Document(不同的Schema)都获得了一个字段customer
。现在,如果我想删除客户,我必须删除与所述客户相关的所有文档。我的问题是,如果不使用Schema.remove({customer: customerId})
连续调用所有模式,我就不知道如何做到这一点。
是否有一个"全球"删除/查找搜索每个文档的命令?
感谢您的帮助。
答案 0 :(得分:0)
不幸的是没有。
这必须按照集合进行。
一般认为,删除数据库中的文档是一个坏主意,除非它是队列,因此mark
将用户视为非活动状态通常更好,而不是删除他们和他们所有的文件。
答案 1 :(得分:0)
通过laggingreflex提供的链接,我提出了一个解决方案:
var modelNames = mongoose.connection.modelNames();
var counter = modelNames.length;
for (var i in modelNames){
result.model(modelNames[i]).remove({customer: req.params.id}, function(err){
if(err) { return handleError(res, err); }
counter--;
if (!counter){
result.remove(function(err) {
if(err) { return handleError(res, err); }
res.send(204);
})
}
});
}
如果有人有更好的主意,我很乐意看到它。 : - )