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格式的字符串了。