MongoDB 多字段唯一索引的两种设计方法 - 兴趣小组
返回

MongoDB 多字段唯一索引的两种设计方法

如下是一个使用 mongoose 实现的点赞评论表结构,我们希望每个用户只能点赞一次,因此我们设计一个唯一索引,限制其重复写入。

const LikeCommentSchema = new Schema(
  {
    user: { type: ObjectId, ref: 'User', required: true },
    comment: { type: ObjectId, ref: 'Comment', required: true },
    status: { type: Boolean, default: true }
  }
);

第一种索引方法,在索引层进行创建索引

LikeCommentSchema.index({ user: 1, comment: 1 }, { unique: true });

第二种索引方法,在数据库层进行限制重复,创建一个 index 字段,将 user.id 和 comment.id 拼接成一个字符串写入其中,然后对这个字段进行唯一索引

const LikeCommentSchema = new Schema(
  {
    user: { type: ObjectId, ref: 'User', required: true },
    comment: { type: ObjectId, ref: 'Comment', required: true },
    status: { type: Boolean, default: true }
    // 数据层多字段唯一索引,值为 ${user._id}_${comment._id}
    index: { type: String, required: true, unique: true }
  }
);
7月7日编辑于 7月7日
点赞
转发
收藏
目前暂未有人回复