mongoDb性能提升
最近在弄MongoDB的时候 发现只按照官网的方式进行操作的话,性能不行,想着用单例模式封装一下,提升一下性能,代码如下:
//引入mongodb相关的模块
const MongoClient = require("mongodb").MongoClient;
//mongodb数据库的相关配置信息
const config = {
//数据库链接地址
dbUrl:"mongodb://localhost:27017",
//要操作的数据库名称
dbName:"ydb"
};
//创建相应的数据库实体类 //说明:因为操作数据库是一个异步操作 用一个promise解决异步问题 后面在koa中await就可以直接获取值了
class MgondoDb {
//采用单例模式
static getInstance() {
if (!MgondoDb.instance) {
MgondoDb.instance = new MgondoDb();
}
return MgondoDb.instance;
}
constructor(){
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 resolve(this.dbClient)
})
}
insert(collectionName,json){
return new Promise((resolve,reject)=>{
this.connect().then((dbClient)=>{
dbClient.collection(collectionName).insertOne(json,(err,data)=>{
if(err){
reject(err);
return false
}
resolve(data);
});
})
})
}
remove(collectionName,json){
return new Promise((resolve,reject)=>{
this.connect().then((dbClient)=>{
dbClient.collection(collectionName).remove(json,(err,data)=>{
if(err){
reject(err);
return false
}
resolve(data);
});
})
})
}
update(collectionName,wjson,ujson){
return new Promise((resolve,reject)=>{
this.connect().then((dbClient)=>{
dbClient.collection(collectionName).update(wjson,ujson,(err,data)=>{
if(err){
reject(err);
return false
}
resolve(data);
});
})
})
}
find(collectionName,json){
return new Promise((resolve,reject)=>{
this.connect().then((dbClient)=>{
let result = dbClient.collection(collectionName).find(json);
result.toArray((err,data)=>{
if(err){
reject(err);
return false
}
resolve(data);
})
})
})
} }
module.exports = MgondoDb.getInstance();
这样封装之后,MongoDB就处于长链接状态了,除了第一次操作数据库的时候会比较好时间而已,剩下操作数据库的时候,时间就会提升100倍以上,赶快器试试吧!
mongoDb性能提升的更多相关文章
- 云 MongoDB 优化让 LBS 服务性能提升十倍
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 随着国内服务共享化的热潮普及,共享单车,共享雨伞,共享充电宝等各种服务如雨后春笋,随之而来的LBS服务定位问题成为了后端服务的一个挑战.M ...
- 在MongoDB中创建一个索引而性能提升1000倍的小例子
在https://www.cnblogs.com/xuliuzai/p/9965229.html的博文中我们介绍了MongoDB的常见索引的创建语法.部分同学还想看看MongoDB的威力到底有多大,所 ...
- MongoDB 性能优化五个简单步骤
MongoDB 一直是最流行的 NoSQL,而根据 DB-Engines Ranking 最新的排行,时下 MongoDB 已经击败 PostgreSQL 跃居数据库总排行的第四位,仅次于 Oracl ...
- 必看!如何让你的LBS服务性能提升十倍!
本文由云+社区发表 作者:腾讯云数据库团队 随着国内服务共享化的热潮普及,共享单车,共享雨伞,共享充电宝等各种服务如雨后春笋,随之而来的LBS服务定位问题成为了后端服务的一个挑战.MongoDB对LB ...
- 极速Node.js:来自LinkedIn的10个性能提升秘籍
from:http://faylai.iteye.com/blog/1293194 1.避免使用同步的方法 nodejs 是基于单线程.为了让单线程能够处理高并发的请求,我们尽量要避免让线程等待,阻塞 ...
- Mongodb性能调优
摘要 1. Mongodb 适用场景简介 2. Mongodb 性能监控与分析 3. Mongodb 性能优化建议 关于Mongodb的几个大事件 1.根据美国数据库知识大全官网发布的DB热度排行,M ...
- SQL Server 2014里的性能提升
在这篇文章里我想小结下SQL Server 2014引入各种惊艳性能提升!! 缓存池扩展(Buffer Pool Extensions) 缓存池扩展的想法非常简单:把页文件存储在非常快的存储上,例如S ...
- MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划
这篇文章主要介绍了MongoDB性能篇之创建索引,组合索引,唯一索引,删除索引和explain执行计划的相关资料,需要的朋友可以参考下 一.索引 MongoDB 提供了多样性的索引支持,索引信息被保存 ...
- mapreduce性能提升2
mapreduce性能提升2mapreduce性能提升2mapreduce性能提升2
随机推荐
- html中table的px与百分比格式设置
PX是Pixel的缩写,也就是说像素是指基本原色素及其灰度的基本编码,由 Picture(图像) 和 Element(元素)这两个单词的字母所组成的 Html设置table格式时面临着百分比还是px的 ...
- 17)C++开始--命名空间
命名空间:就是区分同一个名字,在不同的作用域的变量 代码展示 #include<iostream> namespace spaceA{ ; namespace spaceB{ struct ...
- linux 上zookeeper安装
一.zookeeper 的安装及配置 .Zookeeper下载 wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.3.6/zooke ...
- LeetCode No.79,80,81
No.79 Exist 单词搜索 题目 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相 ...
- Spring定义Bean的两种方式:和@Bean
前言: Spring中最重要的概念IOC和AOP,实际围绕的就是Bean的生成与使用. 什么叫做Bean呢?我们可以理解成对象,每一个你想交给Spring去托管的对象都可以称之为Bean. 今天 ...
- Linux文件属性和权限
Linux文件属性 第一栏:表示文件类型和权限 文件的类型: d:目录 -:文件 l:链接文件 b:可存储设备 c:可输入设备 第一组:表示拥有者权限 第二组:表示该组的权 ...
- NIO详解
目录 NIO 前言 IO与NIO的区别 Buffer(缓冲区) Channel(通道) Charset(字符集) NIO遍历文件 NIO 前言 NIO即New IO,这个库是在JDK1.4中才引入的. ...
- Java子类和父类的初始化执行顺序
要明白子类和父类的初始化执行顺序,只需要知晓以下三点,就不会再弄错了. 1.创建子类对象时,子类和父类的静态块和构造方法的执行顺序为:父类静态块->子类静态块->父类构造器->子类构 ...
- 使用iframe的好处与坏处详细比拼
一.使用iframe的坏处 1.搜索引擎的蜘蛛不会识别在iframe中被调用的图片.文本.url等内容的,因为该内容不属于该页面,只是访问的时候被临时的调用,而且在SEO建议中也有提到:"f ...
- Java IO: 网络
原文链接 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 校对:方腾飞 Java中网络的内容或多或少的超出了Java IO的范畴.关于Java网络更多 ...