这次要和大家分享MongoDB 的使用,有时候会用到服务端的一些功能,简单的就可以自己写写,学习一下MongoDB真的是非常不错的选择。MongoDB 官网对其介绍如下:MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
1.安装配置
1.到官网下载安装包 https://www.mongodb.com/try/download/community
2.安装,下一步即可。
3.安装完成配置环境变量 。系统变量Path中添加 C:\Program Files\MongoDB\Server\4.2\bin。之后重启。
4.查看版本检查是否安装成功
5.创建数据库和启动服务
1. D盘新建文件夹data,data下面新建文件夹db
2. 打开cmd ,切换到 C:\Program Files\MongoDB\Server\4.2\bin ,运行 mongod --dbpath D:\data\db
参考下图:
2.命令行下的增删改查操作
在创建数据库和启动服务之后另外再开一个命令窗口:
之后就可以使用命令操作数据库了:
1.可以使用show dbs命令查看都有哪些数据库:
2.可以使用use test新建或者切换数据库
3.可以使用insert新增数据,如:
db.test.insert({"name":"zhangw"})
4.可以使用find查找数据,如:
db.test.find()
5.可以使用update修改数据,如:
db.test.update({"name":"newName"},{$set:{"age":16}});
6.可以使用remove删除数据,如:
db.test.remove({"name":"newName"})
3.图形化工具下的操作
1.下载安装图形化工具 https://robomongo.org/download
2.建立连接
3.使用图形化工具操作数据库
如下图是进行插入操作:
如下图是进行查询操作:
如下图是进行修改操作:
如下图是进行删除操作:
4.Nodejs中使用 Mongoose 操作
看到了一个新词:Mongoose 。它是啥?一般我们不直接用MongoDB的函数来操作MongoDB数据库。Mongose就是一套操作MongoDB数据库的接口。
先来介绍Mongoose里面两个重要的概念:
Schema (模式类型):一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力。
Model (模型):由 Schema 发布生成的模型,具有抽象属性和行为的数据库操作。
下面看一下如何在node.js中使用Mongose。install mongoose之后,在index.js中添加如下代码:
const mongoose = require('mongoose');
const urlDev = "mongodb://localhost:27017/user"
mongoose.connect(urlDev, {
useNewUrlParser: true
})
mongoose.connection.on('connected', function () {
console.log(`数据库连接成功了`);
})
mongoose.connection.on('error', function () {
console.log('出错了');
})
mongoose.connection.on('disconnected', function () {
console.log('连接断开');
})
上述代码首先引入mongoose,然后建立连接。连接的url地址的形式为:
mongodb://数据库的ip地址:端口号/数据库名
如果端口号是默认的端口号(27017) 则可以省略不写 。
如下代码新建了模式类型然后根据模式类型新建了模型(User):
const User = mongoose.model('user', new mongoose.Schema({
name: {type: String, require: true},
age: {type: Number, require: true}
}))
下面看一下增删改查这些操作。
4.1 新增数据
User.create({
name: 'newName7',
age: 27
}, (err, doc) => {
if (!err) {
console.log(doc)
} else {
console.log(err)
}
})
控制台打印出结果:
{ _id: 5f056c3a8aba110b9cedb9bf,
name: 'newName7',
age: 27,
__v: 0 }
使用图形化工具查看数据库看到一条数据被添加到数据库:
4.2 查找多条数据
在有newName7基础上,再新增一条数据newName6,然后运行查找数据的代码:
User.find({}, (err, doc) => {
if (!err) {
console.log(doc) // 得到的是数组
} else {
console.log(err)
}
}
控制台打印结果:
[ { _id: 5f056c3a8aba110b9cedb9bf,
name: 'newName7',
age: 27,
__v: 0 },
{ _id: 5f056d66e3bd183dc49e2e89,
name: 'newName6',
age: 26,
__v: 0 }
]
使用图形化工具查看数据库看到两条数据:
4.3 查找一条数据
如果只查找一条数据则需要使用findOne:
User.findOne({}, (err, doc) => {
if (!err) {
console.log(doc) // 得到的是对象
} else {
console.log(err)
}
})
控制台打印结果:
{ _id: 5f056c3a8aba110b9cedb9bf,
name: 'newName7',
age: 27,
__v: 0 }
4.4 带条件的查找一条数据
带条件的查找需要在查询条件中添加相应的内容:
User.findOne({'name': 'newName5'}, (err, doc) => {
if (!err) {
console.log(doc) // 得到的是对象
} else {
console.log(err)
}
})
控制台打印结果:
{ _id: 5f0570008a96460f6091cd59,
name: 'newName5',
age: 25,
__v: 0 }
4.5 更新一条数据
使用updateOne更新数据:
User.updateOne({name: 'newName5'}, {$set: {age:22}}, (err,doc) =>{
if (!err) {
console.log(doc)
} else {
console.log(err)
}
})
控制台打印结果:
{ n: 1, nModified: 1, ok: 1 }
4.6 更新多条数据
User.updateMany({name: 'newName5'}, {$set: {age:20}}, (err,doc) =>{
if (!err) {
console.log(doc)
} else {
console.log(err)
}
})
控制台打印结果:
{ n: 2, nModified: 2, ok: 1 }
使用图形化工具查看数据库看到两条数据被更新了:
4.7 删除多条数据
deleteOne删除一条数据,deleteMany用于删除多条数据:
User.deleteMany({age: 20}, (err, doc) => {
if (!err) {
console.log(doc)
} else {
console.log(err)
}
})
控制台打印结果:
{ n: 2, ok: 1, deletedCount: 2 }
4.8 统计数据条数
新增3个25岁的newName,然后统计一下25岁的有几个,使用countDocuments统计个数:
User.countDocuments({age: 25}, (err, doc) => {
if (!err) {
console.log(doc)
//3
} else {
console.log(err)
}
})
mongoose还有有很多的方法以及高级用法比如聚合、比如关联查询等等,可以自己参照官网去实践练习。这次就和大家分享这么多,下次再见!