mongodb - Mongoose - Ref - 根据子文档更新父级
问题描述
我决定使用 Mongoose 的“Ref”功能,而不是拥有子文档,因为这些模式/模型被大量且独立地查询。用例是一个包含多个请求的作业,所以我有一个作业模式和一个请求模式,如下所示。
const jobSchema = new Schema({
_id: {
type: Schema.Types.UUID,
},
status: {
type: String,
enum: _.keys(jobStatus),
},
requestIds: [
{
type: Schema.Types.UUID,
ref: 'Request',
},
],
});
和
const request = new Schema({
_id: {
type: Schema.Types.UUID,
},
jobId: {
type: Schema.Types.UUID,
ref: 'Job',
},
status: {
type: String,
enum: _.keys(requestStatus),
},
});
请求状态是独立更新的,但作业状态取决于请求状态的完成。因此,如果所有请求都已完成,我需要将作业状态标记为已完成。为了将作业更新为已完成,我需要查看所有请求 ID 是否都处于已完成状态。如何在 Mongoose 查询/更新中进行操作,最好是对数据库的一次调用。
解决方案
推荐阅读
- javascript - Vue.js 兼容 JS 图表,用于指示高低范围之间的值
- php - 仅在 laravel 中打印过滤数据的 pdf
- vb.net - 如何在 shell 命令后打开消息框
- c++ - 如何更新二维数组以将成绩转换为 GPA 值?
- php - 为什么会话在网站的主目录中不起作用
- javascript - 我试图找到一种方法,所以当它低于某个 y 时,文本将变为红色(p5.js)
- postgresql - 如何在 talend 中处理特殊字符和几何数据类型
- wcf - 访问 BasicHttpBinding 端点失败并出现 System.ServiceModel.Security.SecurityAccessDeniedException:“访问被拒绝。”
- python - 使用 Python 从工具提示中获取数据
- html - 高度为 100% 的 Flex-grow 孩子在 Safari 中的高度为零