首页 > 解决方案 > 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 查询/更新中进行操作,最好是对数据库的一次调用。

标签: mongodbmongoosemongoose-populate

解决方案


推荐阅读