我没有使用子文档,而是大量独立地查询了这些模式/模型,因此我决定使用Mongoose的“ Ref”功能。用例是一个包含多个请求的Job,因此我有一个Job模式和一个Request模式,如下所示。
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中查询/更新,最好是一次调用数据库。