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驱动的正确使用方法

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

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

    1. 什么是副本集 副本集就是mongoDB副本所组成的一个集群. 同期原理是,写操作发生在主库,从库同步主库的OpLog日志. 集群中没有特定的主库,主库是选举产生,如果主库down了,会再选举出一 ...

  2. 14.MongoDB系列之配置分片

    1. 启动服务器 1.1 启动配置服务器 配置服务器是集群的大脑,保存着关于每个服务器包含哪些数据的所有元数据,因此,必须首先创建配置服务器. 由于资源限制,在同一机器上启动三个进程 # mkdir ...

  3. MongoDB系列(二):C#应用

    前言 上一篇文章<MongoDB系列(一):简介及安装>已经介绍了MongoDB以及其在window环境下的安装,这篇文章主要讲讲如何用C#来与MongoDB进行通讯.再次强调一下,我使用 ...

  4. MongoDB系列三(Spring集成方案).

    一.前言 MongoDB是最为流行的开源文档数据库之一.Spring Data MongoDB提供了三种方式在Spring应用中使用MongoDB: 通过注解实现对象-文档映射: 使用MongoTem ...

  5. mongodb系列之---副本集配置与说明

    在配置副本集之前,我们先来了解一些关于副本集的知识. 1,副本集的原理 副本集的原理与主从很相似,唯一不同的是,在主节点出现故障的时候,主从配置的从服务器不会自动的变为主服务器,而是要通过手动修改配置 ...

  6. Mongodb系列:初识Mongodb

    一.背景: 月初进行了期末考试非常荣幸可以參加到了考试系统维护中(详情请阅读:<那些年我们一起參加的活动:15年上半年考试系统维护总结>)!主要负责server维护,在维护期间对Mongo ...

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

    mongodb系列之-管理mongodb->db.currentOp() 管理mongodb->db.currentOp(), 绝对是原创... 今天公司的dba在内部分享了针对mysql ...

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

    上一篇文章一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库中,我们介绍了Power BI Desktop中连接Oracle和Mysql的方法,其实说到底还是驱动的问题, ...

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

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

随机推荐

  1. Android入门(十)SQLite创建升级数据库

    原文链接:http://www.orlion.ga/603/ 一.创建数据库 Android为了让我们能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper帮助类, 借助这个类就可 ...

  2. mongodb php

    首先安装扩展,然后才能使用mongodb 一.连接数据库 try { $mongo = new MongoClient(); $db = $mongo->mydb; var_dump($db); ...

  3. 为大家分享一个 Ajax Loading —— spin.js

    我们在做Ajax 异步请求的时候,一般都会利用一个动态的 Gif 小图片来制作一个Ajax Loading ,以便增加用户体验. 今天在网上发现了一个 Spin.js ,该 js 脚本压缩后5k,可以 ...

  4. js实现图片加载特效(从左到右,百叶窗,从中间到两边)

    /* 网上百度的,感觉”从中间到两边“的效果写的不是很好,改了一下,感觉可以了!*/<html> <head> <title></title> < ...

  5. ibatis轻松入门

    近日,由于公司项目应用开发的逻辑层使用的是iBatis.上网查了些资料,自己写了点demo入门.感觉良好.iBatis实在是比Hibernate很容易入门,贡献出来与各路菜鸟分享(后文附源码),希望得 ...

  6. Windows Azure Web Site (6) 使用FTP发布Azure Web Site

    <Windows Azure Platform 系列文章目录> 笔者在之前的文章中介绍的都是使用IDE,也就是Visual Studio,将本地的aspx发布到Azure Web Site ...

  7. ASP.NET MVC系列:添加控制器

    基于MVC的应用程序包含三个部分 Models(模型):对应用程序的数据进行处理 Views(视图):动态生成HTML,显示数据 Controllers(控制器):应用程序中处理用户交互的部分,处理浏 ...

  8. Mac下github项目检出与提交

    项目检出 如果你的git还没有代码仓库,可以用过git的代码仓库页面新建一个你的仓库 创建git上的仓库后,我们还需要建立本地的仓库,所以打开Mac终端,建立本地仓库文件夹(这里我用HelloC),然 ...

  9. C语言学习017:malloc和free

    malloc和free都包含在<stdlib.h>头文件中 局部变量由于存储在栈中,一旦离开函数,变量就会被释放,当我们需要将数据持久使用,就需要将数据保存到堆中,而在堆中申请内存空间就需 ...

  10. .net又一个生成缩略图的方法,不变形

    生成缩略图是一个十分常用功能,找到了一个方法,重写部分代码,实用又好用,.net又一个生成缩略图的方法,不变形 /// <summary> /// 为图片生成缩略图 by 何问起 /// ...