mongodb系列3 mongo mongoskin 连接以及连接数的问题进阶

1)使用mongodb连接mongo

var mongo = require(‘mongodb‘), //引入mongodb
    dbHost = ‘127.0.0.1‘,
    dbPort = 27017;//配置基本的信息

var Db = mongo.Db;
var Connection = mongo.Connection;
var Server = mongo.Server;
var db = new Db (‘local‘, new Server(dbHost, dbPort), {safe:true});  //初始化数据库对象

db.open(function(error, dbConnection){
  if (error) {
    console.error(error);
    process.exit(1);
  }
  var item = {
    name:"haha"
  };
  dbConnection.collection("aa").insert(item,function(error,item){
    if(error) {
      console.error(error);
      process.exit(1);
    }
    console.log("inserted");
    db.close();
    process.exit(0);  //向collection aa中插入一条数据(aa不存在的前提下会创建aa )
  });
});

看见成功在collection aa中插入了我在程序中创建的数据

2)使用mongoskin连接mongo

/**
 * Created by hao on 2016/4/19.
 */

var mongoskin = require("mongoskin"),
    dbHost = "127.0.0.1",
    dbPort = 27017;

var db = mongoskin.db(dbHost + ‘:‘ + dbPort + ‘/local‘,{safe:true});  //基本的数据库配置
db.bind("aa",{
  findOneAndAddAge:function(age,fn) {
    db.collection("aa").findOne({},function(error,item){
      if(error) {
        console.log(error);
        process.exit(1);
      }
      item.age = age;
      db.collection("aa").save(item,function(error,item){
        if(error) {
            console.error(error);
            process.exit(1);
        }
        console.log("saved");
        db.close();
      });
    });
  }
}); //为数据集合创建方法自定义方法  这里当数据库中不存在相应的集合的时候,下面调用绑定的方法会出错 对比mongodb的连接情况

db.collection("aa").findOneAndAddAge(22,function(){
  console.log("changed");
});

修改了数据

tip:mongoskin是node.js原生驱动mongodb的子集  也就是你也可以像使用mongodb那样使用mongoskin

3)进阶连接数

/**
 * Created by hao on 2016/4/19.
 */

var server_options = {};
var db_options = {
  w:-1,
  logger:{
    log:function(msg,obj){
      console.log(‘[log]‘ + msg);
    }
  }
}; //开启的

var mongodb = require("mongodb"),
    mongoserver = new mongodb.Server("localhost",27017,server_options), //根据server_options去初始化server
    db = new mongodb.Db(‘local‘,mongoserver,{safe:true});

function test(){
  db.open(function(error,dbCollection){
    if(error) {
      console.errro(error);
      process.exit(1);
    }
    dbCollection.collection("aa").insert({name:"hao"},function(error,item){
      if(error) {
        console.error(error);
        process.exit(1);
      }
      console.log("inserted");
      db.close();
    });

  });
}
test();

在server_options中有个poolsize选项 默认值是5 db提供这个连接池  默认下每次请求过来会打开这个有5个连接的连接池,然后就关闭这个连接池,也就是每个请求过来都是打开5个连接然后在关闭5个连接

 

上面的模式存在着问题,当访问数激增的时候,就会出现之前的连接还没有关闭,后面来的请求要求打开这个还没有关闭的请求出现错误 可以切换下面这种模式  就是程序启动的时候就open数据库的连接 ,然后在操作之后不去关闭这个连接,但是这种模式存在着一定的问题,就是当并发访问数大的时候,可用的数据库数据库连接数只有5 会出现阻塞 解决方案是使用连接池对象模式

具体请参考这篇文章   关于连接数的思路都是从上面来的    https://cnodejs.org/topic/5190d61263e9f8a542acd83b  mongodb驱动的正确使用方法

时间: 2024-10-08 01:36:15

mongodb系列3 mongo mongoskin 连接以及连接数的问题进阶的相关文章

MongoDB系列教程(八):GridFS存储详解

MongoDB系列教程(八):GridFS存储详解 GridFS简介 mongoDB的文档以BSON格式存储,支持二进制的数据类型,当我们把二进制格式的数据直接保存到mongoDB的文档中.但是当文件太大时,例如图片和视频等文件,每个文档的长度是有限的,于是mongoDb会提供了一种处理大文件的规范--GridFS. GridFS实现原理 在GridFS数据库中,默认使用fs.chunks 和fs.files来存储文件,其中fs.files集合存放文件的信息,fs.chunks存放文件的数据,一

mongoDB系列之(二):mongoDB 副本集

1. 什么是副本集 副本集就是mongoDB副本所组成的一个集群. 同期原理是,写操作发生在主库,从库同步主库的OpLog日志. 集群中没有特定的主库,主库是选举产生,如果主库down了,会再选举出一台主库. mongoDB也可以配置成主从模式,但,官方已经不建议使用主从模式了,替代方案是采用副本集的模式. 副本集有以下特点: 1. 最小构成是:primary,secondary,arbiter,一般部署是:primary,2 secondary. 2. 成员数应该为奇数,如果为偶数的情况下添加

Ruby2.3.3操作MongoDB入门(Mongo驱动版本2.4.3)-先期准备&数据库连接创建

最近在学习MongoDB的相应知识,涉及到使用Ruby操作MongoDB数据库,因为参考数据中使用的Ruby Mongo驱动版本不是2.3.3,所以在操作方面会有所不同,因此撰写了这篇Ruby2.3.3操作MongoDB入门,学习方式是参考网址https://docs.mongodb.com/ruby-driver/v2.3/quick-start/ 快速学习主要分为以下几个部分: 先期准备 1.1 本地启动MongoDB数据库,端口号27017 Windows环境下启动方式如下:首先CMD命令

mongodb系列之-治理mongodb->db.currentOp()

mongodb系列之-管理mongodb->db.currentOp() 管理mongodb->db.currentOp(), 绝对是原创... 今天公司的dba在内部分享了针对mysql上具体的每个crud语句操作如何进行控制管理(利用的inntop工具),挺好的.这里,我也献丑下,在mongodb中如何管理具体的每个crud操作(比如某个查询语句慢,太占资源,直接可以将其kill掉,这貌似很暴力哈,不过没关系,有时候不得已而为之...不过mongodb中可不是用第三方的工具哦,而是自家实现

kali linux 系列教程之metasploit 连接postgresql可能遇见的问题

kali linux 系列教程之metasploit 连接postgresql可能遇见的问题 文/玄魂   目录 kali linux 下metasploit 连接postgresql可能遇见的问题................................ 1 前言............................................................................................................... 1

一起学微软Power BI系列-使用技巧(2)连接Excel数据源错误解决方法

上一篇文章一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库中,我们介绍了Power BI Desktop中连接Oracle和Mysql的方法,其实说到底还是驱动的问题,还有就是坑爹的驱动版本问题.换了新电脑,在导入模型时,居然碰到了Excel导入错误的情况.顺便记下来吧.其实还是驱动的问题. 1.连接Excel文件错误 新电脑连接Excel居然报错... 2.解决方法 详细的解决方法和说明可以参考PBD的中文文档:https://powerbi.microsoft

mongodb安装与mongo vue的使用

首先,下载mongodb,然后安装 http://downloads.mongodb.com/win32/mongodb-win32-x86_64-enterprise-windows-64-2.6.4-signed.msi?_ga=1.238525191.607472782.1411452026 然后,到安装目录下,创建两个文件夹 cd 到bin目录,执行命令mongod -dbpath "C:\Program Files\MongoDB 2.6 Enterprise\bin"启动m

MongoDB系列(一):简介及安装

什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高性能数据存储解决方案. MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成. MongoDB 文档(BSON)类似于 JSON 对象.字段值可以包含其他文档,数组及文档数组. MongoDB的特点 1. MongoDB的提供了一个面向文档存储,操作起来比较简单和容易.

ubuntu下部署mongodb以及设置允许远程连接

最近因为项目原因需要在阿里云服务器上部署mongodb,网上查阅了一些资料,特此记录一下步骤 1.运行apt-get install mongodb命令安装mongodb服务(如果提示找不到该package,说明apt-get的资源库版本比较旧,运行apt-get update来更新资源库) 2.安装好后输入mongo测试 如果成功进入mongo命令行界面就证明安装成功了 3.如果想要关闭,开启,重启mongodb服务 只需要 sudo mongodb service stop sudo mon