【问题标题】:How to remove schema validation in mongoose (mongodb)?如何在猫鼬(mongodb)中删除模式验证?
【发布时间】:2022-04-28 02:27:40
【问题描述】:

我已安装 MongoDB server version: 5.0.6 并使用 "mongoose": "^6.0.14" 创建模型验证。模型示例:

const User = new Schema({
  name: {
    type: String
  },
  relationId: {
    type: Number,
    unique: true,
    required: 'Id in SQL DB'
  },
});

现在我不需要relationId。实际上我想从数据库中删除它,但我不能。而且我不能改变验证者的行为。我试过了:

将 Mongoose 架构修改为:

const User = new Schema({
  name: {
    type: String
  }
});

作为数据库中的管理员抛出了命令:

db.runCommand({ collMod: "users", validator: {}, validationLevel: "off" })

返回一个{ok:1},但是当我尝试通过 Mongoose 插入文档时仍然出现错误:11000 duplicate key error collection: collection.users index: relationId already exists

我也用过

db.users.updateMany({}, {$unset: {relationId: ''}})

【问题讨论】:

    标签: node.js mongodb mongoose


    【解决方案1】:

    由于架构定义中有unique: true 部分,猫鼬已经在数据库中创建了唯一索引。从架构定义中删除它不会自动从数据库中删除索引。您应该手动删除索引。您可以使用syncIndexes 从数据库中删除索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-20
      • 2014-12-28
      • 2014-01-27
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      • 2014-06-01
      • 2021-12-18
      相关资源
      最近更新 更多