当前位置:Gxlcms > 数据库问题 > mongodb系列3 mongo mongoskin 连接以及连接数的问题进阶

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

时间:2021-07-01 10:21:17 帮助过:2人阅读

  1. <span style="color: #0000ff;">var</span> mongo = require(‘mongodb‘<span style="color: #000000;">), //引入mongodb
  2. dbHost </span>= ‘127.0.0.1‘<span style="color: #000000;">,
  3. dbPort </span>= 27017<span style="color: #000000;">;//配置基本的信息
  4. </span><span style="color: #0000ff;">var</span> Db =<span style="color: #000000;"> mongo.Db;
  5. </span><span style="color: #0000ff;">var</span> Connection =<span style="color: #000000;"> mongo.Connection;
  6. </span><span style="color: #0000ff;">var</span> Server =<span style="color: #000000;"> mongo.Server;
  7. </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;">}); //初始化数据库对象
  8. db.open(</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(error, dbConnection){
  9. </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (error) {
  10. console.error(error);
  11. process.exit(</span>1<span style="color: #000000;">);
  12. }
  13. </span><span style="color: #0000ff;">var</span> item =<span style="color: #000000;"> {
  14. name:</span>"haha"<span style="color: #000000;">
  15. };
  16. dbConnection.collection(</span>"aa").insert(item,<span style="color: #0000ff;">function</span><span style="color: #000000;">(error,item){
  17. </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(error) {
  18. console.error(error);
  19. process.exit(</span>1<span style="color: #000000;">);
  20. }
  21. console.log(</span>"inserted"<span style="color: #000000;">);
  22. db.close();
  23. process.exit(</span>0<span style="color: #000000;">); //向collection aa中插入一条数据(aa不存在的前提下会创建aa )
  24. });
  25. });</span>

技术分享

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

2)使用mongoskin连接mongo

  1. <span style="color: #008000;">/*</span><span style="color: #008000;">*
  2. * Created by hao on 2016/4/19.
  3. </span><span style="color: #008000;">*/</span>
  4. <span style="color: #0000ff;">var</span> mongoskin = require("mongoskin"<span style="color: #000000;">),
  5. dbHost </span>= "127.0.0.1"<span style="color: #000000;">,
  6. dbPort </span>= 27017<span style="color: #000000;">;
  7. </span><span style="color: #0000ff;">var</span> db = mongoskin.db(dbHost + ‘:‘ + dbPort + ‘/local‘,{safe:<span style="color: #0000ff;">true</span><span style="color: #000000;">}); //基本的数据库配置
  8. db.bind(</span>"aa"<span style="color: #000000;">,{
  9. findOneAndAddAge:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(age,fn) {
  10. db.collection(</span>"aa").findOne({},<span style="color: #0000ff;">function</span><span style="color: #000000;">(error,item){
  11. </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(error) {
  12. console.log(error);
  13. process.exit(</span>1<span style="color: #000000;">);
  14. }
  15. item.age </span>=<span style="color: #000000;"> age;
  16. db.collection(</span>"aa").save(item,<span style="color: #0000ff;">function</span><span style="color: #000000;">(error,item){
  17. </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(error) {
  18. console.error(error);
  19. process.exit(</span>1<span style="color: #000000;">);
  20. }
  21. console.log(</span>"saved"<span style="color: #000000;">);
  22. db.close();
  23. });
  24. });
  25. }
  26. }); //为数据集合创建方法自定义方法 这里当数据库中不存在相应的集合的时候,下面调用绑定的方法会出错 对比mongodb的连接情况
  27. db.collection(</span>"aa").findOneAndAddAge(22,<span style="color: #0000ff;">function</span><span style="color: #000000;">(){
  28. console.log(</span>"changed"<span style="color: #000000;">);
  29. });</span>

技术分享

修改了数据

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

3)进阶连接数

  1. <span style="color: #008000;">/*</span><span style="color: #008000;">*
  2. * Created by hao on 2016/4/19.
  3. </span><span style="color: #008000;">*/</span>
  4. <span style="color: #0000ff;">var</span> server_options =<span style="color: #000000;"> {};
  5. </span><span style="color: #0000ff;">var</span> db_options =<span style="color: #000000;"> {
  6. w:</span>-1<span style="color: #000000;">,
  7. logger:{
  8. log:</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(msg,obj){
  9. console.log(</span>‘[log]‘ +<span style="color: #000000;"> msg);
  10. }
  11. }
  12. }; //开启的
  13. </span><span style="color: #0000ff;">var</span> mongodb = require("mongodb"<span style="color: #000000;">),
  14. mongoserver </span>= <span style="color: #0000ff;">new</span> mongodb.Server("localhost",27017<span style="color: #000000;">,server_options), //根据server_options去初始化server
  15. db </span>= <span style="color: #0000ff;">new</span> mongodb.Db(‘local‘,mongoserver,{safe:<span style="color: #0000ff;">true</span><span style="color: #000000;">});
  16. </span><span style="color: #0000ff;">function</span><span style="color: #000000;"> test(){
  17. db.open(</span><span style="color: #0000ff;">function</span><span style="color: #000000;">(error,dbCollection){
  18. </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(error) {
  19. console.errro(error);
  20. process.exit(</span>1<span style="color: #000000;">);
  21. }
  22. dbCollection.collection(</span>"aa").insert({name:"hao"},<span style="color: #0000ff;">function</span><span style="color: #000000;">(error,item){
  23. </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(error) {
  24. console.error(error);
  25. process.exit(</span>1<span style="color: #000000;">);
  26. }
  27. console.log(</span>"inserted"<span style="color: #000000;">);
  28. db.close();
  29. });
  30. });
  31. }
  32. test();</span>

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

 技术分享

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

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

 

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

标签:

人气教程排行