//引入mongooseconst mongoose = require('mongoose');//如果数据库里面没有它会自动创建;//连接mongooseDB数据库(如果执行了then函数就是连接成功了) // catch就是连接失败mongoose.connect('mongodb://localhost/数据库名').then(function(){console.log(''连接成功'');}).catch(function(){console.log(''连接成功'');)//创建(字段集合规则)表(规定字段类型)const stuSchema =new mongoose.Schema({ name:String, age:Number})//创建一个表//把创建好的放到数据库里面去(表名在数据库中创建时会自动加s)//创建一个表时会返回表的对象//Students大写构造函数const Students = mongoose.model('student表名',stuSchema)//填充表的数据const stu = new Students({name:'小明',age:'20'})//保存stu.save();//创建新数据第一种方式:Students.create({name:'西欧',age:18}要添加的数据,function(err失败,data成功返回数据到data){})第二种方式:const promise = Students.create({name:'西欧',age:18})promise.then(data=>console.log(data)).catch(err=>console.log(err))//查询://查询数据库里面的所有的数据(返回的一定是一个数组)Students.find().then(data=>{})//查询一条数据(返回的是一个对象,默认返回第一条数据)Students.findOne({条件name:'小明'}).then(data=>{})//删除:(要有正确的条件)//删除数据库中所有的数据Students.deleteMany({条件name:/^小/}).then(data=>{})Students.remove().then(data=>{})//删除数据库中第一条数据,且返回一个结果信息Students.deleteOne({条件name:/^小/}).then(data=>{})//findOneAndDelete() 表示查询符合条件的第一条数据并且把它删除,然后返回它删除之前的数据Students.findOneAndDelete({条件name:/^小/}).then(data=>{console.log(data)})//修改://修改数据库中所有的数据Students.updateMany({条件name:/^小/},{修改成age:18}).then(data=>{})//修改数据库中第一条数据Students.updateOne({条件name:/^小/},{修改成name:'小雪',age:100}).then(data=>{})//findOneAndDelete() 表示查询符合条件的第一条数据并且把它修改,然后返回它之前数据Students.findOneAndUpdate({条件name:'小雪'},{修改成name:'小小'}).then(data=>{console.log(data)})//查询范围($gt大于)($lt小于)(大于10 小于30)const promise = Students.find({ age: { $gt: 10, $lt: 30 } }) .then((data) => { console.log(data.length); }) .catch((err) => { console.log(err); }); //查询兴趣里面有喜欢吃的(包含$in) const promise = Students.find({ hobbies: { $in: ['吃', '拉'] } }) .then((data) => { console.log(data.length); }) .catch((err) => { console.log(err); }); //查询名字中包含('婷'或者'娟'的人) const promise = Students.find({ name: /o|w/ }) .then((data) => { console.log(data.length); }) .catch((err) => { console.log(err); }); //分页查询(每一页展示3条数据,查询第二页的数据) //skip()跳过多少条记录 limit()查询多少条 (跳过前面三条,查询第二页的三条)const page = 1; //页数const size = 3; //条数const promise = Students.find() .skip((page - 1) * size) .limit(size) .then((data) => { console.log(data.length); }) .catch((err) => { console.log(err); }); //排序查询(sort()年龄排序) const promise = Students.find() .sort('age') .then((data) => { console.log(data); }) .catch((err) => { console.log(err); }); //查询指定字段(select('age name')过滤)中间用空格隔开 , 不用的 -name const promise = Students.find() .select('name age -name') .then((data) => { console.log(data); }) .catch((err) => { console.log(err); });
//关联查询//ref()引用 //populate(两表之间关联的字段)**//创建学生表字段const studSchema = new mongoose.Schema({ name: { type: 'String' }, t_id: { type: mongoose.Schema.Types.ObjectId, //学生表id类型写法 ref: 'teacher' //ref()引用 }});//创建创建一个学生表时表的对象const Studs = mongoose.model('Stud', studSchema);//填充表数据Studs.create({ name: '小婷', t_id: '626113cef519edb1f2f7e02b' });**//创建老师表字段类型const teacherSchema = new mongoose.Schema({ name: String});//创建创建一个老师表时表的对象const Teachers = mongoose.model('teacher', teacherSchema);//填充表数据Teachers.create({ name: '老婷' });//关联查询 (查询学生属于哪个老师)const promise = Studs.find() .populate('t_id') //populate(两表之间关联的字段) .then((data) => { console.log(data); });
//规定name必填://required设置它为必填项 maxlength/minlength长度//trim: true 自动去首尾空格//规定年龄://max/min 大小//规定性别://enum 设置可迭代 values内容 message提示//createTime 创建时间 default设置默认值//自定义规则://validate:{ 验证器validator(){}} 验证const userSchema = new mongoose.Schema({ name: { type: String, required: [true, '姓名是必填项...'], maxlength: [4, '姓名长度最大为四...'], minlength: [2, '姓名长度最大为2...'], trim: true }, age: { type: Number, max: [200, '年龄大了'], min: [0, '年龄小了'] }, sex: { type: Number, enum: { values: [0, 1], message: '性别只能是1或者0..' } }, createTime: { type: Date, default: new Date() }, //自定义规则 email: { type: String, validate: { validator(val) { //正则验证/^\d{5,}@qq\.com$/.test(val) return /^\d{5,}@qq\.com$/.test(val); //如果返回true就是符合规则,不符合就不通过 }, message: '请输入正确的邮箱规则...' } }});const Users = mongoose.model('user', userSchema);//把email的值传给valUsers.create({ name: 'oooo ', age: 15, sex: 1, email: '12345@qq.com' });