mongodb

1.下载mongoose

2.连接数据库

	const mongoose = require('mongoose')
	//连接数据库
	mongoose.connect('mongoose://localhost/zyf',{ useNewUrlParser: true})
	//连接成功
	.then(()=>{console.log('数据库连接成功')})
	//连接失败
	.catch(err=>{console.log(err,'数据连接失败')})

3.创建文档

第一种方式

const mongoose = require('mongoose')

mongoose.connect('mongodb://localhost/zyf',{useUnifiedTopology: true,useNewUrlParser: true}).then(()=>{console.log('数据库连接成功')}).catch((err)=>{if(err!=null){console.log('数据库连接失败')}})

//1.创建集合规则
const coureseSchema = mongoose.Schema({
	name:String,
	author:String
})

//2.使用规则创建集合
const Course = mongoose.model('Course',courseSchema)    //courses

//3.创建文档
const course = new Course({
	name:'node.js基础',
	author:'黑马讲师',
})

//将文档插入到数据库中
course.save()

第二种方式

//引入第三方模块
const mongoose = require('mongoose');
//连接数据库
mongoose.connect('mongodb://localhost/aiqi',{ useNewUrlParser: true, useUnifiedTopology: true });

//创建集合规则
const courseSchema = mongoose.Schema({
	job:String,
	author:String
}); 

//创建集合
const Course = mongoose.model('course',courseSchema);

//数据插入数据库
Course.create({job:'IT',author:'aiqi'}).then((data)=>{console.log(data)})

4.查数据库

const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost/class')

const userSchema = new mongoose.Schema({
	name: String,
	age: Number,
	email: String,
	password: String,
	hobbies: [String]
})

const user = mongoose.model('users',userSchema)

//没有条件默认查全部
user.find().then(data=>{console.log(data)})
//findOne只查询一条数据,没有查询条件默认输出第一条数据
user.findOne({name:'zyf'}).then(data=>{console.log(data)})
//$gt 大于   $lt小于
user.find({age:{$gt:12,$lt:33}}).then(data=>{console.log(data)})

//$in 包含
user.find({hobbies:{$in:['足球']}}).then(data=>{console.log(data)})

//select()显示指定字段,在字段前面加-可以去掉该字段查询

user.find().select('name age -id').then(data=>{console.log(data)})

//sort()  可以对查询结果指定字段进行排序,在字段前加-为降序
user.find().sort('-age').then(data=>{console.log(data)})

//skip() 跳过前几位进行显示   limit限制显示几位
user.find().skip(2).limit(3).then(data=>{console.log(data)})

5.删除数据库里面的数据

const mongoose = require('mongoose')

mongoose.connect('mongodb:localhost/user')

const userSchema = new mongoose.Schema({
	name: String,
	age: Number,
	email: String,
	password: String,
	hobbies: [String]
})

const user = mongoose.model('users',userSchema)
//删除匹配第一条数据
user.findOneAndDelete({name:'张三'}).then(data=>{console.log(data)})

//删除多条数据
user.deleteMany({age:{$gt:11}}).then(data=>{consoole.log(data)})

6.更新数据库

const mongoose = require('mongoose')

mongoose.connect('mongodb://localhost/class')

const userSchema = new mongoose.Schema({
	name: String,
	age: Number,
	email: String,
	password: String,
	hobbies: [String]
})

const user = mongoose.model('users',userSchema)

//修改多条数据updateMany(匹配条件,修改内容)
user.updateMany({age:20},{age:333,name:'zyf'}).then(data=>{console.log(data)})

//修改单条数据updateOne(匹配条件,修改内容)
user.updataOne({age:10},{age:555,name:'qi'}).then(data=>{console.log(data)})

7.数据库数据检验

	const mongoose = require('mongoose')

mongoose.connect('mongodb://localhost/class',{ useUnifiedTopology: true,useNewUrlParser: true })


const zyf = new mongoose.Schema({
	title:{
		type:String,
		//必填
		required:[true,'数据必填'],
		//字符串最长长度
		maxlength:[18,'长度不能超过18']
		//字符串最小长度
		minlength:[0,'长度不能小过0'],
		//去掉两边空格
		trim:true
	},
	age:{
		type:Number,
		//最小值
		min:[0,'数据不能小过0'],
		//最大值
		max:[100,'数据不能超过100'],
	},

	publishDate:{
		type:Date,
		//默认值
		defalut:Date.now
	},
	category:{
		type:String,
		//枚举,列举数据取值的内容
		enum:{
			values:['aiqi','zyf'],
			message:'超过允许的内容'
		}
	},
	//自定义检验
	author:{
		type:String,
		validate:{
			validator:data=>{
				//得返回Boolean值
				return data&&data.length>4
			},
			message:'长度不能超过4'	
		}
	}
})

const zyfcoures = mongoose.model('zyfCoures',zyf)


zyfcoures.create({title:'         1222            ', age: 60, category: 'java', author: 'bd'}).then(data=>{console.log(data)})
.catch(error=>{
    const err = error.errors
    //输出错误信息
    for(let attr in err){
        console.log(err[attr]['message'])
    }
})

8.数据库关联字段

const mongoose = require('mongoose')

mongoose.connect('mongodb://localhost/class',{useUnifiedTopology: true,useNewUrlParser: true})


const userSchema = new mongoose.Schema({
    name:String,
    age:Number
}) 

const postSchema = new mongoose.Schema({
    title:String,
    author:{
    	//通过objectId进行关联
        type:mongoose.Schema.Types.ObjectId,
        //关联哪个集合对象
        ref:'User',
    }
})

const User = mongoose.model('User',userSchema)
const Post = mongoose.model('Post',postSchema)
// User.create({name:'aiqi',age:18})
//插入数据时需要写ID
Post.create({title:'123',author:'60aa168e394c173e1423bd47'}).then(data=>{console.log(data);})

//通过populate查询关联字段的数据
Post.find({title:'123'}).populate('author').then((data)=>{
    const {author} = data[0];
    console.log(author);
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值