三好先森|Node.js 学习笔记:使用数据库( 二 )
2. MongoDBMongoDB是非关系型数据库的一个典型代表 , 我们在这里用它来示范 Node.js 对关系型数据库的处理 。 在 Node.js 中操作MongoDB数据库有两个扩展包可以选择 , 下面我们一一来演示 。 首先 , 在code/06_database目录下执行mkdir mongodb命令 , 并执行以下步骤:
使用mongodb包
- 在code/06_database/mongodb目录下执行npm install mongodb命令 , 将mongodb包安装到当前示例项目中 。
- 为控制程序按串行方式执行 , 需在code/06_database/mongodb目录下执行npm install async命令 , 将async包安装到当前示例项目中 。
- 在code/06_database/mongodb目录下执行touch useMongodb.js , 创建一个脚本文件 , 具体如下:
const MongoClient = require('mongodb').MongoClientconst async = require('async')const server = 'mongodb://localhost:27017'const dbName = 'hrdb'const collName = 'hr_table'const dbPath = server + '/' + dbNameMongoClient.connect(dbPath, { useNewUrlParser: true },function(err, db) {if ( err !== null ) {return console.error('错误信息:' + err.message)}const dbo = db.db(dbName)console.log(dbName + '数据库创建成功')const collect = dbo.collection(collName)console.log(collName + '集合创建成功')async.series([// 控制程序串行执行function (callback) {// 插入单条数据const data = http://kandian.youth.cn/index/{name :'杨过',age : '42',sex : '男',items : '看书, 喝酒, 习武'}collect.insertOne(data, function(err, res) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('单条数据插入成功')})callback()},function (callback) {// 插入多条数据const dataArray = [{name : '小龙女',age : '24',sex : '男',items : '看书, 唱歌, 习武'},{name : '郭靖',age : '52',sex : '男',items : '看书, 喝酒, 习武'},{name : '黄蓉',age : '45',sex : '女',items : '看书, 绘画, 习武'},{name : '雅典娜',age : '24',sex : '女',items : '看书, 音乐, 被救'}]collect.insertMany(dataArray, function(err, res) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('数组插入成功')})callback()},function (callback) {// 列出所有数据collect. find({}).toArray(function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('列出当前集合中的所有数据:')console.log(result)})callback()},function (callback) {// 更新单一数据const whereData = http://kandian.youth.cn/index/{'name' : '小龙女'}const updataValue = http://kandian.youth.cn/index/{ $set: {'sex' : '女' } }collect.updateOne(whereData, updataValue,function(err, res) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log(whereData['name'] + "的数据更新成功")})callback()},function (callback) {// 查询指定数据const querystr = { 'name' : '小龙女' }collect. find(querystr).toArray(function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('查看更新后的' + querystr['name'] + '的数据:')console.log(result)})callback()},function (callback) {// 删除指定单一数据const whereData = http://kandian.youth.cn/index/{'name' : '黄蓉' }collect.deleteOne(whereData,function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log(whereData['name'] + '的数据已被删除')})callback()},function (callback) {// 查询所有数据 , 并按name降序排列const isort = { name : -1 }collect. find({}).sort(isort).toArray(function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('降序排列当前集合中的所有数据:')console.log(result)})callback()},function (callback) {// 删除指定多条数据const whereData = http://kandian.youth.cn/index/{'age' : '24' }collect.deleteMany(whereData,function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('年龄为' + whereData['age'] + '的数据已被删除')})callback()},function (callback) {// 查询所有数据 , 并按name升序排列const isort = { name : 1 }collect. find({}).sort(isort).toArray(function(err, result) {if ( err !== null ) {return console.error('错误信息:' + err.message)}console.log('升序排列当前集合中的所有数据:')console.log(result)})callback()},function (callback) {// 删除指定集合dbo.dropCollection(collName, function(err, delOK) {if ( err !== null ) {return console.error('错误信息:' + err.message)}if ( delOK !== null ) {console.log(collName + "集合已删除!")}})callback()}])db.close()})
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 三好先森|技术与人类的关系到底是什么?
- 阿狸先森|现今如何了?,被联想198亿元收购的巨头摩托罗拉
- 三好先森|「精选」20个黑科技软件下载网站,让你再无找不到的软件
- 阿狸先森|被联想198亿元收购的巨头摩托罗拉,现今如何了?
- 小胖先森|或是华米第一款联名手表?,华米预热新品
- 小胖先森|Hero 9 Black运动相机曝光,GoPro
- 三好先森|基于JeecgBoot快速开发简历库系统,开源项目,实操分享
- 三好先森|「智能家居」小米碰碰贴2使用体验,米家有了新的玩法
- 三好先森|腾讯也扶不起的“阿斗”,十年败光1亿用户,刚刚正式叫停了
- 阿狸先森|是时候跟百度网盘的龟速下载说拜拜了
