安装

安装MongoDB

npm install mongodb --save

引入中间件

引入mongodb下面的连接模块MongoClient

// 引入MongoDB 连接模块

const MongoClient = MongoDB.MongoClient;

配置中间件

定义数据库连接的地址以及配置数据库的名称

let url = "mongodb://localhost:27017/";

let dbName = "koa";

连接数据库

nodejs连接数据库

MongoClient.connect(url,(err,client)=>{

if(err){

console.log(err);

return false;

}

let db = client.db(dbName); //数据库db对象

});

操作数据库

MongoClient.connect(url,(err,client)=>{

if(err){

console.log(err);

return false;

}

let db = client.db(dbName); //数据库db对象

db.collection('user').insertOne({'name':'张三'}, function(err, result){

if(!err){

console.log('数据增加成功');

clinet.close(); //关闭连接

}

});

let cx = db.collection('user').find({});

cx.toArray((err,docs)=>{

console.log(docs);

});

});

封装MongoDB库,优化【连接数据库】和【操作数据库】操作

最终会有两个文件,一个是 MongoDB配置文件MongoDB.config.js和一个是MongoDB封装文件MongoDB.db.js。

MongoDB.config.js文件:

// MongoDB数据库配置文件

const app = {

// 定义数据库地址

'dbUrl' : 'mongodb://localhost:27017/',

// 定义数据库名字

'dbName' : 'koa'

};

module.exports = app;

MongoDB.db.js文件:

/*

封装DB库操作

*/

// 引入MongoDB 模块

const MongoDB = require("mongodb");

// 引入MongoDB 连接模块

const MongoClient = MongoDB.MongoClient;

// 引入MongoDB ObjectID模块

const ObjectID = MongoDB.ObjectID;

// 引入配置文件

const Config = require("./MongoDB.config.js");

class Db {

// 单例模式,解决多次实例化时候每次创建连接对象不共享的问题,实现共享连接数据库状态

static getInstance() {

if (!Db.instance) {

Db.instance = new Db();

}

return Db.instance;

}

constructor() {

// 属性 存放db对象

this.dbClient = "";

// 实例化的时候就连接数据库,增加连接数据库速度

this.connect();

}

// 连接数据库

connect() {

return new Promise((resolve, reject) => {

// 解决数据库多次连接的问题,要不然每次操作数据都会进行一次连接数据库的操作,比较慢

if (!this.dbClient) {

// 第一次的时候连接数据库

MongoClient.connect(Config.dbUrl, (err, client) => {

if (err) {

reject(err);

} else {

// 将连接数据库的状态赋值给属性,保持长连接状态

this.dbClient = client.db(Config.dbName);

resolve(this.dbClient);

}

});

} else {

// 第二次之后直接返回dbClient

resolve(this.dbClient);

}

});

}

/**

* 查询数据库

* 使用方法: let result = await DB.find('user',{});

* @param {String} collectionName 集合名称、数据表名

* @param {Object} json 查询的条件

*/

find(collectionName, json) {

return new Promise((resolve, reject) => {

this.connect().then((db) => {

// 操作db库里的某一个表,返回符合条件的内容,json查找的条件

let result = db.collection(collectionName).find(json);

result.toArray(function (err, docs) {

if (err) {

reject(err);

return;

}

resolve(docs);

});

});

});

}

/**

* 更新数据库

* 使用方法: let result = await DB.update('user',{'username':'lisi'},{'username':'李四'});

* @param {String} collectionName 集合名称、数据表名

* @param {Object} json1 需要更新数据的条件

* @param {Object} json2 新数据的内容

*/

update(collectionName, json1, json2) {

return new Promise((resolve, reject) => {

this.connect().then((db) => {

// 操作db库里的某一个表,更新一条数据,json1查找的内容,json2更新的新内容,回调函数

db.collection(collectionName).updateOne(

json1,

{

$set: json2,

},

(err, result) => {

if (err) {

reject(err);

} else {

resolve(result);

}

}

);

});

});

}

/**

* 插入数据库

* 使用方法: let result = await DB.insert('user',{'username':'赵六666','age':30,'sex':'女','status':'2'});

* @param {String} collectionName 集合名称、数据表名

* @param {Object} json 插入的新数据

*/

insert(collectionName, json) {

return new Promise((resolve, reject) => {

this.connect().then((db) => {

// 操作db库里的某一个表,插入一条数据,json插入的新内容,回调函数

db.collection(collectionName).insertOne(json, (err, result) => {

if (err) {

reject(err);

} else {

resolve(result);

}

});

});

});

}

/**

* 批量插入数据库

* 使用方法: let result = await DB.insert('user',[{'username':'赵六666','age':30,'sex':'女','status':'2'},{'username':'赵六666','age':30,'sex':'女','status':'2'},{'username':'赵六666','age':30,'sex':'女','status':'2'}...]);

* @param {String} collectionName 集合名称、数据表名

* @param {Array} json 批量插入的新数据

*/

insertMany(collectionName, arr) {

return new Promise((resolve, reject) => {

this.connect().then((db) => {

// 操作db库里的某一个表,批量插入一组数据,arr批量插入的新内容,回调函数

db.collection(collectionName).insertMany(arr, (err, result) => {

if (err) {

reject(err);

} else {

resolve(result);

}

});

});

});

}

/**

* 删除数据

* 使用方法: let result = await DB.remove('user',{'username':'李四'});

* @param {String} collectionName 集合名称、数据表名

* @param {Object} json 删除数据的条件

*/

remove(collectionName, json) {

return new Promise((resolve, reject) => {

this.connect().then((db) => {

db.collection(collectionName).removeOne(json, (err, result) => {

if (err) {

reject(err);

} else {

resolve(result);

}

});

});

});

}

/**

* 通过id查询数据时候需要用到此方法,MongoDB里面查询_id ,把字符串转换成对象

* MongoDB数据库里的_id是自动生成的,通过dind方法查询结果可以看到形式如: {"_id": ObjectId("5aad299bc166236421c99d229")},直接传入5aad299bc166236421c99d229,是查询不到结果的,所以需要包装一下

* 使用方法: let result = await DB.find('user',{'_id': DB.getObjectID(xxxxx)});

* @param {String} id 要查询的id

*/

getObjectID(id) {

return new ObjectID(id);

}

}

module.exports = Db.getInstance();

koa mysql mongodb_koa 操作MongoDB数据库相关推荐

  1. node用mongodb还是mysql,Node 操作 mongoDB 数据库和 mySQL数据库

    下载安装 MongoDB image.png 直接点击下载就行了 image.png 安装 mongodb 一直点击下一步,知道这一步 image.png 选中自己选择想安装的目录路径(选择安装的目录 ...

  2. Python 操作 MongoDB 数据库!

    作者 |黄伟呢 来源 |数据分析与统计学之美 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 先来看看MySQL与MongoDB 概念区别 ...

  3. 58 Node.js中操作mongoDB数据库

    技术交流 QQ 群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder 的程序人生 1.数据库概述及环境搭建 1.1 为什么要使用数据库 动态网站中的数据都是存储在数据 ...

  4. 用python向mongodb插入数据_Python操作MongoDB数据库(一)

    Python操作MongoDB数据库(一) 前言 干货文章继续出发!隔的时间有些久了哈,对 MongoDB 安装回顾的同学,可以看下windows环境 <初识 MongoDB 数据库>.这 ...

  5. php mongoclient使用,PHP使用mongoclient简单操作mongodb数据库示例

    本文实例讲述了PHP使用mongoclient简单操作mongodb数据库.分享给大家供大家参考,具体如下: 最好回到<mongodb shell基础命令[进阶篇]>,再来看这里的内容,否 ...

  6. 操作Mongodb数据库及性能测试

    文章目录 操作Mongodb数据库,性能测试 引入mongodb模板 开启mongodb数据库 连接mongodb数据库 插入一条数据 查询全部数据 测试性能 操作Mongodb数据库,性能测试 目标 ...

  7. PHP操作mongodb数据库操作类

    最近的项目开发中使用的数据库是mongodb数据库,因为小编的公司也是刚刚使用mongodb数据库,所以之前没有封装好的mongodb数据库操作类拿来使用,所以小编在项目中自己封装了一个mongodb ...

  8. Lua 操作 MongoDB 数据库实例

    最近有个工作是使用Nginx + Lua实现一个操作MongoDB数据库的API,主要实现其count和query功能.之前没有写过Lua,于是也就勉强着上手,在cloudwu的 lua-mongo ...

  9. python数据库模糊查询_Python操作mongodb数据库进行模糊查询操作示例

    本文实例讲述了Python操作mongodb数据库进行模糊查询操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pymongo import re ...

最新文章

  1. ios 检测是否安装微信异常
  2. python 动态修改 类和实例 的方法
  3. 百度相关搜索软件_Python与seo,百度关键词相关搜索关键词采集源码
  4. LVS的DR工作模型解析
  5. Android webView 缓存 Cache + HTML5离线功能 解决
  6. Web 应用服务器端渲染入门指南
  7. mac ssh远程登录linux,MAC使用SSH远程登录
  8. 为某人命名以重新连接到您的服务器
  9. PCB设计的基本步骤
  10. 关于布隆过滤器的所有信息:利用Hash实现的索引方案
  11. oracle数据库中的一些操作
  12. 【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算
  13. 这些单晶XRD测试问题你了解吗?(一)
  14. 弱电机房如何理线整理机柜?值得收藏学习
  15. 152位高校教师接龙晒工资,给打算入高校的博士们参考!
  16. https封装类,支持get/post请求
  17. 王垠:怎样尊重一个程序员
  18. 大数据Spark Continuous Processing
  19. spider_study 1
  20. 有道云笔记不同步_有道云笔记无法同步如何处理?笔记无法同步解决方法介绍...

热门文章

  1. 双十一提前预热,这款耳机直降80元!
  2. 使用Kubernetes和Docker将Spring Boot与MongoDB作为容器部署
  3. 设置linux文件系统密码,busybox 文件系统设置 登陆 login 密码 password shadow
  4. Centos/Red Hat6.8 安装、配置、启动Gitlab (内网环境)心得分享
  5. shell脚本触发java程序支持传参补跑 +crontab定时器_02
  6. flowable用户组的处理
  7. Git + GitHub 超详细知识笔记整理
  8. os是android5.0,Funtouch OS 2.1曝光 完美改Android5.0
  9. linux下装sqlserver安装包,【sqlServer】CentOS7.x 上Microsoft SQL Server for Linux安装和配置...
  10. php msgid排重,如何应用php数组对百万数据停止排重