时间:2021-07-01 10:21:17 帮助过:2人阅读
- <span style="color: #0000ff;">var</span> mongo = require(‘mongodb‘<span style="color: #000000;">), //引入mongodb
- dbHost </span>= ‘127.0.0.1‘<span style="color: #000000;">,
- dbPort </span>= 27017<span style="color: #000000;">;//配置基本的信息
- </span><span style="color: #0000ff;">var</span> Db =<span style="color: #000000;"> mongo.Db;
- </span><span style="color: #0000ff;">var</span> Connection =<span style="color: #000000;"> mongo.Connection;
- </span><span style="color: #0000ff;">var</span> Server =<span style="color: #000000;"> mongo.Server;
- </span><span style="color: #0000ff;">var</span> db = <span style="color: #0000ff;">new</span> Db (‘local‘, <span style="color: #0000ff;">new</span> Server(dbHost, dbPort), {safe:<span style="color: #0000ff;">true</span><span style="color: #000000;">}); //初始化数据库对象
- db.open(</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(error, dbConnection){
- </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (error) {
- console.error(error);
- process.exit(</span>1<span style="color: #000000;">);
- }
- </span><span style="color: #0000ff;">var</span> item =<span style="color: #000000;"> {
- name:</span>"haha"<span style="color: #000000;">
- };
- dbConnection.collection(</span>"aa").insert(item,<span style="color: #0000ff;">function</span><span style="color: #000000;">(error,item){
- </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(error) {
- console.error(error);
- process.exit(</span>1<span style="color: #000000;">);
- }
- console.log(</span>"inserted"<span style="color: #000000;">);
- db.close();
- process.exit(</span>0<span style="color: #000000;">); //向collection aa中插入一条数据(aa不存在的前提下会创建aa )
- });
- });</span>
看见成功在collection aa中插入了我在程序中创建的数据
2)使用mongoskin连接mongo
- <span style="color: #008000;">/*</span><span style="color: #008000;">*
- * Created by hao on 2016/4/19.
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">var</span> mongoskin = require("mongoskin"<span style="color: #000000;">),
- dbHost </span>= "127.0.0.1"<span style="color: #000000;">,
- dbPort </span>= 27017<span style="color: #000000;">;
- </span><span style="color: #0000ff;">var</span> db = mongoskin.db(dbHost + ‘:‘ + dbPort + ‘/local‘,{safe:<span style="color: #0000ff;">true</span><span style="color: #000000;">}); //基本的数据库配置
- db.bind(</span>"aa"<span style="color: #000000;">,{
- findOneAndAddAge:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(age,fn) {
- db.collection(</span>"aa").findOne({},<span style="color: #0000ff;">function</span><span style="color: #000000;">(error,item){
- </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(error) {
- console.log(error);
- process.exit(</span>1<span style="color: #000000;">);
- }
- item.age </span>=<span style="color: #000000;"> age;
- db.collection(</span>"aa").save(item,<span style="color: #0000ff;">function</span><span style="color: #000000;">(error,item){
- </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(error) {
- console.error(error);
- process.exit(</span>1<span style="color: #000000;">);
- }
- console.log(</span>"saved"<span style="color: #000000;">);
- db.close();
- });
- });
- }
- }); //为数据集合创建方法自定义方法 这里当数据库中不存在相应的集合的时候,下面调用绑定的方法会出错 对比mongodb的连接情况
- db.collection(</span>"aa").findOneAndAddAge(22,<span style="color: #0000ff;">function</span><span style="color: #000000;">(){
- console.log(</span>"changed"<span style="color: #000000;">);
- });</span>
修改了数据
tip:mongoskin是node.js原生驱动mongodb的子集 也就是你也可以像使用mongodb那样使用mongoskin
3)进阶连接数
- <span style="color: #008000;">/*</span><span style="color: #008000;">*
- * Created by hao on 2016/4/19.
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">var</span> server_options =<span style="color: #000000;"> {};
- </span><span style="color: #0000ff;">var</span> db_options =<span style="color: #000000;"> {
- w:</span>-1<span style="color: #000000;">,
- logger:{
- log:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(msg,obj){
- console.log(</span>‘[log]‘ +<span style="color: #000000;"> msg);
- }
- }
- }; //开启的
- </span><span style="color: #0000ff;">var</span> mongodb = require("mongodb"<span style="color: #000000;">),
- mongoserver </span>= <span style="color: #0000ff;">new</span> mongodb.Server("localhost",27017<span style="color: #000000;">,server_options), //根据server_options去初始化server
- db </span>= <span style="color: #0000ff;">new</span> mongodb.Db(‘local‘,mongoserver,{safe:<span style="color: #0000ff;">true</span><span style="color: #000000;">});
- </span><span style="color: #0000ff;">function</span><span style="color: #000000;"> test(){
- db.open(</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(error,dbCollection){
- </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(error) {
- console.errro(error);
- process.exit(</span>1<span style="color: #000000;">);
- }
- dbCollection.collection(</span>"aa").insert({name:"hao"},<span style="color: #0000ff;">function</span><span style="color: #000000;">(error,item){
- </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(error) {
- console.error(error);
- process.exit(</span>1<span style="color: #000000;">);
- }
- console.log(</span>"inserted"<span style="color: #000000;">);
- db.close();
- });
- });
- }
- test();</span>
在server_options中有个poolsize选项 默认值是5 db提供这个连接池 默认下每次请求过来会打开这个有5个连接的连接池,然后就关闭这个连接池,也就是每个请求过来都是打开5个连接然后在关闭5个连接
上面的模式存在着问题,当访问数激增的时候,就会出现之前的连接还没有关闭,后面来的请求要求打开这个还没有关闭的请求出现错误 可以切换下面这种模式 就是程序启动的时候就open数据库的连接 ,然后在操作之后不去关闭这个连接,但是这种模式存在着一定的问题,就是当并发访问数大的时候,可用的数据库数据库连接数只有5 会出现阻塞 解决方案是使用连接池对象模式
具体请参考这篇文章 关于连接数的思路都是从上面来的 https://cnodejs.org/topic/5190d61263e9f8a542acd83b mongodb驱动的正确使用方法
mongodb系列3 mongo mongoskin 连接以及连接数的问题进阶
标签: