本文共 4296 字,大约阅读时间需要 14 分钟。
这次要和大家分享MongoDB 的使用,有时候会用到服务端的一些功能,简单的就可以自己写写,学习一下MongoDB真的是非常不错的选择。MongoDB 官网对其介绍如下:MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
1.到官网下载安装包 https://www.mongodb.com/try/download/community
3.安装完成配置环境变量 。系统变量Path中添加 C:\Program Files\MongoDB\Server\4.2\bin。之后重启。
5.创建数据库和启动服务
1. D盘新建文件夹data,data下面新建文件夹db 2. 打开cmd ,切换到 C:\Program Files\MongoDB\Server\4.2\bin ,运行 mongod --dbpath D:\data\db
参考下图:
在创建数据库和启动服务之后另外再开一个命令窗口:
之后就可以使用命令操作数据库了:
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"})
1.下载安装图形化工具 https://robomongo.org/download
2.建立连接
3.使用图形化工具操作数据库
如下图是进行插入操作:
如下图是进行查询操作:
如下图是进行修改操作:
如下图是进行删除操作:
看到了一个新词: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} }))
下面看一下增删改查这些操作。
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 }
使用图形化工具查看数据库看到一条数据被添加到数据库:
在有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 } ]
使用图形化工具查看数据库看到两条数据:
如果只查找一条数据则需要使用findOne:
User.findOne({}, (err, doc) => { if (!err) { console.log(doc) // 得到的是对象 } else { console.log(err) } })
控制台打印结果:
{ _id: 5f056c3a8aba110b9cedb9bf, name: 'newName7', age: 27, __v: 0 }
带条件的查找需要在查询条件中添加相应的内容:
User.findOne({ 'name': 'newName5'}, (err, doc) => { if (!err) { console.log(doc) // 得到的是对象 } else { console.log(err) } })
控制台打印结果:
{ _id: 5f0570008a96460f6091cd59, name: 'newName5', age: 25, __v: 0 }
使用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 }
User.updateMany({ name: 'newName5'}, { $set: { age:20}}, (err,doc) =>{ if (!err) { console.log(doc) } else { console.log(err) } })
控制台打印结果:
{ n: 2, nModified: 2, ok: 1 }
使用图形化工具查看数据库看到两条数据被更新了:
deleteOne删除一条数据,deleteMany用于删除多条数据:
User.deleteMany({ age: 20}, (err, doc) => { if (!err) { console.log(doc) } else { console.log(err) } })
控制台打印结果:
{ n: 2, ok: 1, deletedCount: 2 }
新增3个25岁的newName,然后统计一下25岁的有几个,使用countDocuments统计个数:
User.countDocuments({ age: 25}, (err, doc) => { if (!err) { console.log(doc) //3 } else { console.log(err) } })
mongoose还有有很多的方法以及高级用法比如聚合、比如关联查询等等,可以自己参照官网去实践练习。这次就和大家分享这么多,下次再见!
参考资料:
https://www.cnblogs.com/dreamsqin/p/10885038.html
https://www.mongodb.org.cn/
https://blog.csdn.net/muguli2008/article/details/80591256