如何根据字段和字段的特定值创建 mongo 唯一索引?

How to create a mongo unique index based on fields and a particular value of a field?

我有一个预订集合,我在其中存储这样的数据:

{
_id,
fieldId: (a reference to _id from another collection),
status: a string which can be `valid` or `cancelled` or `completed`,
date: eg. `2022-02-09T13:00:00.000+00:00`
}

现在,我想确保在给定日期只能有一个状态为 fieldId 的预订:有效。可以有多个或none个已取消或已完成的,但fieldId、date和status的值valid的组合必须是唯一的。我知道如何为 fieldId 和日期创建唯一索引:

BookingSchema.index({ fieldId: 1, date: 1 }, { unique: true }); 

是否也可以添加状态字段的值valid?如果没有,我是否应该只检查每个预订是否已经存在该日期和字段的 valid 预订?

感谢prasad_提供解决方案,即部分索引。 如果有人遇到相同类型的问题,这里是猫鼬的解决方案:

BookingSchema.index(
  { fieldId: 1, date: 1 },
  {
    unique: true,
    partialFilterExpression: {
      status: { $eq: `valid` },
    },
  }
);