이 글에서는 주로 몽구스 데이터베이스의 고유 설정이 적용되지 않는 문제에 대한 해결 방법과 몽구스의 고유 제한 사항을 제거하는 방법에 대한 예제를 예제 코드를 통해 자세히 소개합니다. . 필요하신 분들은 참고하시면 도움이 될 것 같습니다.
Foreword
unique는 스키마 제약 조건 확인의 멤버입니다. 주요 기능은 특정 필드의 값을 고유하게 만드는 것입니다(반복할 수 없음).
필드의 고유성을 유지하려면 다음 유형 값을 사용하세요. :String ,unique:true,dropDups: true}
참고: 몽구스가 데이터 저장 메커니즘을 변경하면 데이터베이스를 다시 시작해야 합니다. 이것이 많은 초보자가 적용되지 않는 일부 속성을 설정하는 이유입니다.
다시 시작이 언급되었습니다. 여기서는 간단하지 않습니다. 몽구스 데이터베이스 서버를 닫았다가 다시 열되 먼저 전체 데이터베이스를 삭제한 다음 데이터베이스 서비스를 다시 시작하세요
간단한 스키마 특수 사용 예
//导入模块 var mongoose = require('mongoose'); //连接数据库 mongoose.connect('mongodb://localhost/itheima'); //创建schema //schema第一个参数是我们自定义的数据类型 第二个参数是管理schema默认的数据类型 var studentSchema = mongoose.Schema({ name:{type:String,required:true},//数据类型为string,不能非空 age:{type:Number,default:18},//数据类型为string,默认值18 study_id:{type:Number,select:true},//学号,默认查询字段 address:{type:String,lowercase:true},//地址,默认小写 email:{type:String,match:RegExp(/^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/)},//邮箱,正则表达式验证 phone:{type:String,unique:true,dropDups: true}//电话号码唯一性 },{ versionKey: false,//去掉版本锁 __v0 timestamps: { createdAt: 'createTime', updatedAt: 'updateTime' }//自动管理修改时间 }); //创建model var student = mongoose.model('student',studentSchema); //创建Entity var zhangsan = new student({ name:'zhangsan',//名字必须要有,否则会报错: name: Path `name` is required. address:'ZhongLiang',//字符串都会变成小写 email:'a12345@qq.com',//邮箱格式不对,添加会报错 Path `email` is invalid (a12345qq.com). study_id:2017001, phone:'123456789'//在添加唯一性字段时,mongoose会先查询数据库所有的phone值,一旦发现该值已存在则会报错 }); //添加数据 student.create(zhangsan,function(err){ if(err){ throw err; } console.log('插入成功' + zhangsan); });
몽구스는 고유한 제한 사항을 제거합니다
프로그램에 포함된 이메일은 다음과 같습니다. 처음에는 unque로 설정되어 있습니다. 제한으로 인해 이메일을 이 컬렉션에 반복적으로 삽입할 수 없습니다. 이제 고유한 제한을 제거하고 싶습니다.
db.your_collection.dropIndexes();
관련 권장사항:
몽구스의 가상 필드 쿼리 구현 방법에 대한 자세한 설명
설치 Node.js_node.js와 함께 Mongoose를 사용하여 MongoDB를 운영하기 위한 기본 튜토리얼
위 내용은 몽구스의 고유 설정이 적용되지 않는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!