从不同的模式中查找文档
Find Documents from Different Schemas
我目前正在创建一个应该管理不同人群的网络服务。因此,我创建了一个客户模式,我的 MongoDB 中的每个文档(不同的模式)都有一个字段 customer
。现在如果我想删除一个客户,我必须删除与该客户相关的所有文档。我的问题是,如果不使用 Schema.remove({customer: customerId})
连续调用所有模式,我不知道该怎么做。
是否有 "global" remove/find 命令可以搜索每个文档?
感谢您的帮助。
很遗憾没有。
这将必须逐个收集完成。
一般认为删除数据库中的文档是个坏主意,除非它是一个队列,所以通常更好的主意是 mark
说用户不活跃,而不是删除他们和他们所有的文档。
借助laggingreflex提供的link,我想出了一个解决方案:
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);
})
}
});
}
如果有人有更好的主意,我很乐意看到。 :-)
我目前正在创建一个应该管理不同人群的网络服务。因此,我创建了一个客户模式,我的 MongoDB 中的每个文档(不同的模式)都有一个字段 customer
。现在如果我想删除一个客户,我必须删除与该客户相关的所有文档。我的问题是,如果不使用 Schema.remove({customer: customerId})
连续调用所有模式,我不知道该怎么做。
是否有 "global" remove/find 命令可以搜索每个文档?
感谢您的帮助。
很遗憾没有。
这将必须逐个收集完成。
一般认为删除数据库中的文档是个坏主意,除非它是一个队列,所以通常更好的主意是 mark
说用户不活跃,而不是删除他们和他们所有的文档。
借助laggingreflex提供的link,我想出了一个解决方案:
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);
})
}
});
}
如果有人有更好的主意,我很乐意看到。 :-)