koa mysql mongodb_koa 操作MongoDB数据库
安装
安装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数据库相关推荐
- node用mongodb还是mysql,Node 操作 mongoDB 数据库和 mySQL数据库
下载安装 MongoDB image.png 直接点击下载就行了 image.png 安装 mongodb 一直点击下一步,知道这一步 image.png 选中自己选择想安装的目录路径(选择安装的目录 ...
- Python 操作 MongoDB 数据库!
作者 |黄伟呢 来源 |数据分析与统计学之美 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. 先来看看MySQL与MongoDB 概念区别 ...
- 58 Node.js中操作mongoDB数据库
技术交流 QQ 群:1027579432,欢迎你的加入! 欢迎关注我的微信公众号:CurryCoder 的程序人生 1.数据库概述及环境搭建 1.1 为什么要使用数据库 动态网站中的数据都是存储在数据 ...
- 用python向mongodb插入数据_Python操作MongoDB数据库(一)
Python操作MongoDB数据库(一) 前言 干货文章继续出发!隔的时间有些久了哈,对 MongoDB 安装回顾的同学,可以看下windows环境 <初识 MongoDB 数据库>.这 ...
- php mongoclient使用,PHP使用mongoclient简单操作mongodb数据库示例
本文实例讲述了PHP使用mongoclient简单操作mongodb数据库.分享给大家供大家参考,具体如下: 最好回到<mongodb shell基础命令[进阶篇]>,再来看这里的内容,否 ...
- 操作Mongodb数据库及性能测试
文章目录 操作Mongodb数据库,性能测试 引入mongodb模板 开启mongodb数据库 连接mongodb数据库 插入一条数据 查询全部数据 测试性能 操作Mongodb数据库,性能测试 目标 ...
- PHP操作mongodb数据库操作类
最近的项目开发中使用的数据库是mongodb数据库,因为小编的公司也是刚刚使用mongodb数据库,所以之前没有封装好的mongodb数据库操作类拿来使用,所以小编在项目中自己封装了一个mongodb ...
- Lua 操作 MongoDB 数据库实例
最近有个工作是使用Nginx + Lua实现一个操作MongoDB数据库的API,主要实现其count和query功能.之前没有写过Lua,于是也就勉强着上手,在cloudwu的 lua-mongo ...
- python数据库模糊查询_Python操作mongodb数据库进行模糊查询操作示例
本文实例讲述了Python操作mongodb数据库进行模糊查询操作.分享给大家供大家参考,具体如下: # -*- coding: utf-8 -*- import pymongo import re ...
最新文章
- ios 检测是否安装微信异常
- python 动态修改 类和实例 的方法
- 百度相关搜索软件_Python与seo,百度关键词相关搜索关键词采集源码
- LVS的DR工作模型解析
- Android webView 缓存 Cache + HTML5离线功能 解决
- Web 应用服务器端渲染入门指南
- mac ssh远程登录linux,MAC使用SSH远程登录
- 为某人命名以重新连接到您的服务器
- PCB设计的基本步骤
- 关于布隆过滤器的所有信息:利用Hash实现的索引方案
- oracle数据库中的一些操作
- 【Computer Organization笔记06】浮点数的数据表示,浮点数加减运算
- 这些单晶XRD测试问题你了解吗?(一)
- 弱电机房如何理线整理机柜?值得收藏学习
- 152位高校教师接龙晒工资,给打算入高校的博士们参考!
- https封装类,支持get/post请求
- 王垠:怎样尊重一个程序员
- 大数据Spark Continuous Processing
- spider_study 1
- 有道云笔记不同步_有道云笔记无法同步如何处理?笔记无法同步解决方法介绍...
热门文章
- 双十一提前预热,这款耳机直降80元!
- 使用Kubernetes和Docker将Spring Boot与MongoDB作为容器部署
- 设置linux文件系统密码,busybox 文件系统设置 登陆 login 密码 password shadow
- Centos/Red Hat6.8 安装、配置、启动Gitlab (内网环境)心得分享
- shell脚本触发java程序支持传参补跑 +crontab定时器_02
- flowable用户组的处理
- Git + GitHub 超详细知识笔记整理
- os是android5.0,Funtouch OS 2.1曝光 完美改Android5.0
- linux下装sqlserver安装包,【sqlServer】CentOS7.x 上Microsoft SQL Server for Linux安装和配置...
- php msgid排重,如何应用php数组对百万数据停止排重