在Node.js中访问MongoDB数据库

在Node.js中访问MongoDB数据库

废话不多说,直接上步骤

Note: 请确保电脑上安装了mongoDB 以及 Node.js
附上安装的官方文档:
1. mongoDB社区版的Windows,MacOS,Linux的安装 PS: 当前官方最新版为V4.0版,本例子使用版本为V3.6
2. Node.js多平台安装

一. 准备工作

Note: 如果你已经用心地自行安装了MongoDB, 可以跳过这一节(Node.js默认已经安装)

1. 安装

①. MongoDB安装流程简要概括

  1. 各平台下载文件后解压/安装;或者通过工具进行直接安装(homebrew等)
  2. 打开该平台的终端(Teminal)或其他可用的Shell, 运行mongod看全局是否有该命令:
  3. 若没有,说明环境变量默认没有配置,根据当前平台设置环境变量,保证mongodmongo命令可以全局执行. 设置环境变量的方法可自行查阅

②. Node.js的安装(略)

[手动滑稽]默认大家都已经安装了→_→

2. 配置mongoDB

各平台配置方案大体相同,仍然可以参考官方文件:mongoDB社区版的Windows,MacOS,Linux的安装

①. 在根目录下创建一个有读写权限的 /data/db/目录, mongoDB会默认设置此目录为读写目录

②. 使用系统管理者权限sudo等运行mongod命令,返回一堆消息,忽略warning, 只要最后一行为[initandlisten] waiting for connections on port 27017即可,表示数据库系统已经启动

③. 其实上一步已经启动成功了,mongoDB数据库会默认采用27017作为连接端口,当有一份connet连接或断开时,可以在该终端窗口中看到相关log;当然我们可以手动连接数据库进行读写访问:

开启另一个窗口,运行mongo指令(注意是mongo不是mongod), mongo指令会默认连接本地的27017端口,并打开MongoDB的shell进行操作。此时你会在上一个终端窗口中看到连接的信息

具体的mongo shell指令可以查看官方的介绍mongo shell

二. Start

1. 在项目中引入mongodb模块

当前有很多开源的专为nodejs编写的MongoDB读写插件(例如mongoose), 不过本例中我们使用mongoDB的官方驱动——MONGODB NODE.JS DRIVER

引入也十分简单,直接在你的本地项目shell中npm install mongodb --save

2. 使用

说明:
首先要明白MongoDB中 db, collection, document的关系
db: 库。一台机器里可以有多个库
collection: 集合。其实类似 ‘库表’,一个库里有多个表
document: 记录。一个表里有多条记录。
#### 举个例子:
章鱼老师要统计 3年E班 的考试成绩,所以
1. 他建了一个库db,名字叫做 3年E班成绩
2. 各科成绩都要有,所以又建了好几个collection, 分别叫做 国语,英语,人文,科学
3. 每个成绩单里都记录着每个人的成绩,所以他在每个collection下面详细记录了每位同学的成绩A:90分,B:60分,c:80分 …, 如果全班有30位同学,则有30条document

是时候上代码了!!!

const MongoClient = require('mongodb').MongoClient
/* 默认 27017; depending on your configuration */
const mongourl = 'mongodb://localhost:27017'
/* a database name. 如果没有,MongoDB会自己创建 */
const dbName = 'Grade_3_Class_4'
MongoClient.connect(mongourl, { useNewUrlParser: true }) //如果不设置{ useNewUrlParser: true }会有warning, 强迫症患者福利
  .then(client => {
    const db = client.db(dbName)
    /* a collection name. 如果没有,MongoDB会自己创建 */
    const collectionName = 'English_Grade'
    const collection = db.collection(collectionName)
    /* 插入几条document */
    collection.insertMany([
        { name : 'a', grade: 90 },
        { name : 'b', grade: 60 },
        { name : 'c', grade: 80 }
    ], function(err, result) {
        if (err === null) console.log('success')
    });
  })
module.exports = db

上述代码将3名同学的成绩录入了一份英语成绩的表中,并将该表存放在一份数据库中

3. 读写操作

这里根据上述例子背景,简单列出几个常用的操作

  1. 插入记录
    单条插入collection.inserOne({name: 'X', grade: 0}, function(err, result){}
    多条插入collection.inserMany([{name: 'X', grade: 0},{name: 'Y', grade: 0}], function(err, result){}
  2. 删除记录
    单条删除collection.deleteOne({name: 'X', grade: 0}, function(err, result){}
    多条删除collection.inserMany({}, function(err, result){}(删除所有)
  3. 查询记录
    查询记录需要用MongoDB的query filter
    查询所有collection.find({}, function(err, result){}
    查询某2个字段相同的collection.find({name: 'a', grade: 90}, function(err, result){}
    查询包含某个字段collection.find({name: { $exists: true }}, function(err, result){}

更多操作可以参考官方文档

你可能感兴趣的:(ES6,Node.js,mongoDB,数据库)