MongoDB数据库简介:
使用MongoDB的好处是不用SQL语句,它提供了对应的API,其功能和MYSQL基本相同,是最像关系型数据库的非关系型数据库;不需要设计表的结构,文档相当于json
关系型数据库:表就是关系,表与表之间的关系,所有的关系型数据库都要通过SQL语言来操作。
非关系型数据库:比较灵活,没有表,有的就是键值对的形式。
MongoDB使用步骤如下:
// 1.安装步骤:
// 1.打开官网:https://www.mongodb.com ---> software ---> 选择免费Community server下载,注意一定要选择msi格式。
// 2.将下载的程序双击打开,点击下一步,出现custom和complete时选择custom自定义目录安装,不勾选install MongoDB compass,最后点击install按照提示操作,finsh完成安装。
// 3.打开命令行mongod --version查看版本,如果显示未安装,就去改变path指向的变量(复制mongodb的bin文件路径---我的电脑---属性---高级系统设置---环境变量---编辑path----新建添加复制的路径)
// 2.启动:
// 1.打开命令行键入命令:mongod 回车 , 如果启动不成功,则需要在安装文件所在盘符的根目录手动新建:data/db/ or 服务面板找到MongoDB服务启动
// 2.改变数据存储目录键入命令:mongod --dbpath=数据储存目录路径
// 3.停止:在控制窗口Ctrl + C or 服务面板找到MongoDB点击停止
// 4.连接数据库:新打开命令窗口键入命令:mongo 回车默认连接本机数据库 or 可视化面板 ,退出a键入命令:exit
// 5.其它基本命令:1.show dbs---显示所有数据库
// 2.use 数据库名----切换到指定数据(没有回自动建立),实际操作是在node中操作,一般不在命令窗口操作。
// 在node中操作MongoDB:
// 1.使用官方的mongodb包操作:https://www.github.com/mongodb/node-mongodb-native(查阅文档使用)
// 2.也可以使用第三方基于mongodb的包 mongoose 操作:http://mongoosejs.com/(查阅文档使用),步骤:
// 1.命令行键入命令:npm install mongoose --save;-----------使用npm安装mongoose
// 2.const mongoose = require('mongoose');-----------------载入mongoose模块
// 3.mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true})-------连接MongoDB数据库
// 4.const db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function() {// we're connected!})-----测试数据库连接是否成功,可以不用写这段代码
// 5.const kittySchema = new mongoose.Schema({name: String})--------从Schema中派生一切,可以不用写这段代码
// 6.const Kitten = mongoose.model('Kitten', kittySchema)------模式编译成模型
// 7.const silence = new Kitten({ name: 'Silence' }); console.log(silence.name); --------模型是用来构造文档的类,创建一个文档(实例化一个Kitten)
// 8.Kitten.save(function (err) {if (err) return console.error(err);console.log('Kitten')})-------数据持久化
// 9.Kitten.find(function (err) {if (err) return console.error(err);console.log('Kitten');})------查询数据
在node中使用mongoose:
// 在安装完mongoose的情况下使用:
// 1.载入mongoose模块:
var mongoose = require('mongoose');
// 2.连接数据库:
mongoose.connect('mongodb://localhost/test',{useMongoClient:true});
// 3.这段代码加不加都可以,后面学习promise时会具体讲解:
mongoose.Promise = global.Promise;
// 4.创建一个模型(设计数据库):
var Cat = mongoose.model('Student',{name:String});//Cat为类似表名,自己会生成小写复数的集合名,把表称作集合
// 5.持久化:
jack.save(function (err) {
if (err) {
console.log(err);
} else {
console.log('meow 响应出结果');
};
});
mongoose中增删改查:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
// 1. 连接数据库:指定连接的数据库可以不需要存在,当你插入第一条数据之后就会自动被创建出来:
mongoose.connect('mongodb://localhost/itcast');
// 2. 设计文档结构架构(表结构),字段名称就是表结构中的属性名称,约束的目的是为了保证数据的完整性,不要有脏数据:
var userSchema = new Schema({
username: {
type: String,
required: true // 必须有
},
password: {
type: String,
required: true
},
email: {
type: String
}
})
// 3. 将文档结构发布为模型
// mongoose.model 方法就是用来将一个架构发布为 model
// 第一个参数:传入一个大写名词单数字符串用来表示你的数据库名称
// mongoose 会自动将大写名词的字符串生成 小写复数 的集合名称
// 例如这里的 User 最终会变为 users 集合名称
// 第二个参数:架构 Schema,即文档结构架构
// 返回值:模型构造函数
var User = mongoose.model('User', userSchema);
// 4. 当我们有了模型构造函数之后,就可以使用这个构造函数对 users 集合中的数据增删改查:
// 新增数据:
var admin = new User({
username: 'zss',
password: '123456',
email: 'admin@admin.com'
});
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(ret)
}
})
User.find({
username: 'zs'
}, function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
})
User.findOne({
username: 'zs'
}, function (err, ret) {
if (err) {
console.log('查询失败')
} else {
console.log(ret)
}
})
// 删除数据:
User.remove({
username: 'zs'
}, function (err, ret) {
if (err) {
console.log('删除失败')
} else {
console.log('删除成功')
console.log(ret)
}
})
// 更新数据:
User.findByIdAndUpdate('5a001b23d219eb00c8581184', {
password: '123'
}, function (err, ret) {
if (err) {
console.log('更新失败')
} else {
console.log('更新成功')
}
})
数据可视化工具mongobooster:
// 数据可视化工具MongoBooster的使用步骤:
// 1.下载地址:https://nosqlbooster.com/
// 2.下载后双击,一路点击next
// 3.双击打开,create一个数据库并测试连接是否成功
// 4.对数据进行修改
// node操作数据库:
//数据库操作模块
var mongoose = require('mongoose')
// 连接到mongoose数据库当中
// connect连接 content内容 端口号(27017为固定端口号)
// 端口号后面为数据库名称,如果有这个数据库,则直接连接,如果没有数据库则先创建,在连接
mongoose.connect('mongodb://127.0.0.1:27017/test', function(err) {
if (err) {
console.log('数据库连接失败')
} else {
console.log('数据库连接成功')
}
})
// 数据库 =>数据表 一个数据库里面可以有多个不同类型的数据表
// 数据表 => 数据 一个数据表里面可以有多个不同类型的数据
// schema 图表
var messageSchema = new mongoose.Schema({
// 该数据为字符串类型
connect: String,
name: String,
age: Number,
hasStar: Boolean
})
// model 模型
var Message = mongoose.model('messageBox', messageSchema)
var first = new Message({
content: '今天是周日',
name: '小熊',
age: 3,
hasStar: false
})
// 保存
first.save(function(err) {
if (err) {
console.log('保存失败')
} else {
console.log('保存成功')
}
})
// fs.readFile(,function(err,data))
Message.find(function(err, data) {
if (err) {
console.log('数据库读取失败')
} else {
// 读取的时候返回的是数组[ ]
console.log('数据库读取成功')
console.log(data)
}
})
笔者:苦海