02.Mongodb教程

MongoDB

参考: https://www.runoob.com/mongodb/mongodb-tutorial.html

开启和关闭MongoDB数据库

启动

# mongoDB默认使用执行mongod命令所处盘符根目录下的/data/db作为自己的数据存储目录
# 如果在所处盘符根目录下没有这个/data/db这个文件夹,会执行失败
# 所以第一次执行该命令之前先手动创建一个 /data/db 推荐使用
mongod

如果想要修改默认的数据存储目录,可以:

mongod --dbpath=数据存储目录路径

停止

在开启服务服务的命令行,直接Ctrl+c即可停止

或者直接关闭开启的控制台也可以

操作数据库

连接数据库

mongo #该命令默认链接本机的MongoDB

基本命令

#查看所有数据库
show dbs

#退出数据库
exit #连接状态下

#删除当前数据库
db.dropDatabase()


#创建集合
db.createCollection('products')

#删除集合
db.products.drop()


#查看当前操作的数据库
db

#切换到指定的数据库(如果没有该数据库会新建)
use 数据库名称

#插入数据
db.student.insertOne({
    
    "name":"Jack"}) #此时db代表当前操作的数据库

#显示所有的集合
show collections
show tables #两个都是

#查询集合里的内容
db.student.find() #此时db代表当前操作的数据库

#删除集合里的内容
db.student.drop()

MongDB数据库的基本概念

  • 可以有多个数据库
  • 一个集合(类似于关系型数据中的表)中可以有多个文档
  • 文档结构很灵活,没有任何限制
{
    
    
    //qq是一个数据库,users是一个集合,集合里的每一项内容是文档
	qq:{
    
    
		users:[
			{
    
    name:"张三",age:15},
			{
    
    name:"李四",age:16},
			{
    
    name:"王五"}, //这里保存的数据和前两项是不同的,说明了文档结构灵活,没有任何限制。这在关系型数据库是行不同的,关系型数据库必须数据结构一样
			...... 
		],
		products:[
		],
		......
	},
	taobao:{
    
    },
	baidu:{
    
    },
	......
}

在nodejs中使用数据的方式

MongoDB官方有一个 mongodb的包可以用来操作 MongoDB数据库,这个确实很强大,但是用起来比较原始、麻烦。所以咱们不使用它。

真正在公司进行开发,使用的是mongoose这个第三方包,他是基于MongoDB官方的mongodb包进一步做了封装,可以提高开发效率,让你操作MongoDB数据库更方便

第一步:下载一个第三方包(mongoose)

扫描二维码关注公众号,回复: 11667604 查看本文章
npm install mongoose --save  #运行时依赖

下方是一个在nodejs中使用mongoose具有增删改查的例子

	 var mongoose = require('mongoose')
	 
	 //1、连接数据库
	 //指定连接的数据库不需要存在,当你插入第一条数据之后就会自动被创建出来
	 mongoose.connect('mongodb://localhost:27017/itcast',{
    
    useNewUrlParser: true,useUnifiedTopology: true})
	  
	 var Schema = mongoose.Schema
	 //2、设计文档结构(表结构)
	 //字段名称就是表结构中的属性名称
	 //约束的目的的就是为了保证数据的完整性,不要有脏数据
	 var userSchema = new Schema({
    
    
	 	username:{
    
    
	 		type:String,
	 		require:true  //必须有
	 	},
	 	password:{
    
    
	 		type:String,
	 		require:true
	 	},
	 	email:{
    
    
	 		type:String
	 	}
	 })
	 
	 //3、将文档结构发布为模型
	 //	mongoose.model方法就是用来将一个架构发布为model
	 //	第一个参数:传入一个大写名词单数字符串用来表示你的集合名称
	 //				mongoose会自动将大写名词的字符串生成 小写复数 的集合名称
	 //				 例如这里的 User 最终会变成users 集合名称
	 //	第二参数:架构Schema
	 //	返回值:模型构造函数
     
     //第三个参数(可选):可以防止集合名称的默认改变
	 var User = mongoose.model('User',userSchema,'user')
	 
	 //4、当我们有了模型构造函数之后,就可以使用这个构造函数对 users 集合中的数据为所欲为了(增删改查)
	 
	 //-----------------新增数据----------------------------
	 /* var admin = new User({
	 	username:"zs",
	 	password:"123456",
	 	email:"[email protected]"
	 }) 
	 
	 admin.save(function(err,ret){
	 	if(err) {
	 		console.log("保存失败")
	 	}else {
	 		console.log('保存成功')
	 		console.log(ret)
	 	}
	 }) */
	 //-----------------新增数据结束----------------------------
	 
	 
	 
	 //------------------查询数据---------------------------
	 	/* 查询全部 */
	 User.find(function(err,ret){
    
    
	 	if(err){
    
    
	 		console.log('查询失败')
	 	}else{
    
    
	 		console.log('查询结果:')
	 		console.log(ret)
	 	}
	 }) 
	 
	 	/* 条件查询 */
	 /* User.find({
	 	username:'zs',
	 	password:'123456'
	 },function(err,ret){
	 	if(err){
	 		console.log('查询失败')
	 	}else{
	 		console.log('查询结果:')
	 		console.log(ret)
	 	}
	 }) */
	 
	//查询一个
	 /* User.findOne({
	 	username:'zs'
	 },function(err,ret){
	 	if(err){
	 		console.log('查询失败')
	 	}else{
	 		console.log('查询结果:')
	 		console.log(ret)
	 	}
	 }) */
	 //------------------查询数据结束---------------------------
	 
	 
	 
	 //------------------删除数据------------------------------
	 /* User.remove({
	 	username:'admin'
	 },function(err,ret){
	 	if(err){
	 		console.log("删除失败")
	 	}else{
	 		console.log("删除成功")
	 		console.log(ret)
	 	}
	 }) */
	 //------------------删除数据结束--------------------------
	 
	 //-------------------更新数据-----------------------------
	 //findByIdAndUpdate()根据id更新,还有很多更新的API
	 /* User.findByIdAndUpdate('5d5ab35ea0875cf5e6da57aa',{
	 	password:"123"
	 },function(err,ret){
	 	if(err){
	 		console.log("更新失败")
	 	}else{
	 		console.log("更新成功")
	 	}
	 }) */
	 //-------------------更新数据结束-------------------------

在node中使用MySql

下载一个第三方包MySql

npm i MySql

使用方法自行百度

Nodejs注意事项

在设计文档模型的时候,如:

var UserSchema = new Schema({
    
    
    create_time:{
    
    
        type:Date,
        //注意:这里不要写Date.now(),因为会即刻调用
        //这里直接给了一个方法:Data.now
        //当你去new Model的时候,如果你没有传递create_time,则mongoose就会调用default指定的Date.now方法,使用其返回值作为默认值
        default:Date.now
    }
})
module.exports = mongoose.model('User',userSchema)

Express在res提供了一个方法json({name:‘fang’}),这个方法可以将响应的对象的转换为JSON格式,响应的就是一个JSON格式的字符串了。

猜你喜欢

转载自blog.csdn.net/qq_38053677/article/details/108572132