【问题标题】:How to create a mongo unique index based on fields and a particular value of a field?如何根据字段和字段的特定值创建 mongo 唯一索引?
【发布时间】:2022-02-09 22:00:41
【问题描述】:

我有一个预订集合,我在其中存储如下数据:

{
_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 的预订,其状态为:有效。取消或完成的可以有多个,也可以没有,但 fieldId、date 和 status 的值valid 之间的组合必须是唯一的。我知道如何为 fieldId 和 date 创建唯一索引:

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

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

【问题讨论】:

  • 部分索引 - “部分索引只索引集合中满足指定过滤器表达式的文档。”.

标签: mongodb mongoose unique-index


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2015-04-11
    • 2015-06-16
    • 2021-12-24
    • 1970-01-01
    • 2011-07-15
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2014-08-01
    相关资源
    最近更新 更多