首页 > 解决方案 > 一个字段的唯一性取决于另一个字段

问题描述

我有一个方案:

const tailSchema = new Schema(
  {
    personeFor: {
      type: String,
      required: true
    },
    title: {
      type: String,
      unique: true,
      maxlength: 220,
      required: true,
      trim: true
    }
  },
  { versionKey: false, collection: "tails" }
);

只有在 personeFor 字段具有相同值的通道中,title 字段才应该是唯一的。也就是说,如果 personeFor: "firstPerson" 我可以指定 title: "firstTitle" 字段的值 - 只有一次。但是如果 personeFor: "secondPerson" 字段 - 那么我可以再次使用 title: "firstTitle"。标题的唯一性应该在一个人的最前面。是否可以描述该方案以使其有效?

标签: mongodbmongoose

解决方案


您必须创建一个唯一的复合索引以确保元组 personFor/title 是唯一的。

mongo 命令:

db.tailSchema.createIndex(
    { personFor: 1, title : 1}, 
    { unique: true } 
)

或者在猫鼬中:

tailSchema.index({
 { personFor: 1, title : 1}, 
 { unique: true } 
);

推荐阅读