`

node-mongo-native1.3.19连接mongo的最优方法

    博客分类:
  • node
 
阅读更多

最近需要在node下连接mongo,尝试了很多方法,本文简要总结一下

选择Driver

首先,基本上有4个常见的driver供选择

1.官方的是node-mongo-native

2.基于node-mongo-native,封装的mongoose,是一个ODM小框架

3.kiss小组同样基于node-mongo-native封装的mongoskin

4.mongojs

mongoose要求使用Document Schema,我们目前没有这个需求,所以不想用;mongoskin网上评价还可以,但是其GitHub库很久没更新了,而且查看了源代码,发现它是基于很老版本的node-mongo-native封装的,底层用的API现在都不推荐了,担心如果官方驱动继续升级,mongoskin没人维护;mongojs没怎么了解。总之最后还是决定用官方的node-mongo-native作为driver

重要文档

以下是node-mongo-native的相关文档:

官方Manual

Mongo上该Driver的主页

官方GitHub

其中比较重要的文档:

how to connect in a new and better way

MongoClient API

连接方式

截止到本文,driver的最新版本是1.3.19,由于要向后兼容,所以旧的API只是不推荐使用,并没有删除,介绍的文档又比较少,所以刚上手的时候会比较迷惑应该用哪个API

在1.2版本之前,是通过Db这个对象来连接,从1.2版本开始,推荐使用MongoClient这个对象

MongoClient并不是node driver自创的,而是mongodb官方推荐的新的连接方式,可以认为是一种规范,各语言的driver是规范的实现。node-mongo-native就是这种规范的一种实现(自1.2版)

Release Note: Default Write Concern Change

使用MongoClient也有2种方式,一种是使用

 

var MongoClient = require("mongodb").MongoClient;
var client  = new MongoClient();
client.open()
client.close()
client.db()


这几个MongoClient的实例方法,构造方法还涉及到Server、ReplSet、Mongos等,比较繁琐。作者已经不推荐使用了:

 

deprecate direct Db/Server/ReplSet/Mongos

所以目前官方推荐的做法,是使用Connect URI + MongoClient.connect()方法

示例代码:

 

var mongoClient = require('mongodb').MongoClient;

var url = "mongodb://localhost:2222,localhost:3333,localhost:4444/mydb?maxPoolSize=10&w=1&journal=true";

// Open the connection to the server
mongoClient.connect(url, function (err, db) {

    db.collection("test", {}, function (err, collection) {
        collection.count(function (err, count) {
            console.log("there are " + count + " documents in the collection");
            db.close();
        });
    });

});


使用的是connect url,然后用MongoClient.connect(url, option, callback)函数来连接。上面的例子,在url中指定了dbname,那么会直接创建到目标db的连接。如果省略dbname,则是创建到admin db的连接,而不是缺省的test db,这和shell的行为不一样

 

实际上第二个参数option经常是被省略的,option的作用是,某些参数如果在url中没有提供,那么可以在option中指定,或者在option中覆盖url中的配置

回调函数第一个参数是error,第二个参数类型不是MongoClient,而是Db,这是和new MongoClient().open()函数的主要区别

这种方式应该是目前的最佳实践,关键是如何配置连接url,在上面那个how to connect in a new and better way里描述得非常清楚了,需要时可以查看

分享到:
评论

相关推荐

    Egg-mongo基于node-mongodb-native提供egg.js的MongoDB驱动及API

    通过提供的 `brickyang-egg-mongo-native-71ebf06` 文件,你可能能够找到更多关于 Egg-mongo 的源码实现和示例,这将有助于深入理解其工作原理和使用方式。如果你打算在 Egg.js 项目中使用 MongoDB,Egg-mongo 无疑...

    solr-mongo-importer-1.1.0.jar

    solr-mongo-importer-1.1.0.jar solr-mongo-importer-1.1.0.jar solr-mongo-importer-1.1.0.jar

    Egg-mongo 插件,基于 MongoDB Native Driver,仅供官方党享用.zip

    npm install --save egg-mongo-native ``` 然后,在 `config/plugin.js` 文件中启用该插件: ```javascript exports.mongoose = { enable: true, package: 'egg-mongo-native', }; ``` 配置文件 `config/config...

    node-mongo-cli:这是node-mongo-cli项目的主要存储库

    节点mongo-cli node-mongo-cli是一个命令行界面工具,可用于初始化,构建并简化mongoDB开发。 对于MERN或MEAN项目很有用。 工作仍在进行中,请参阅对node-mongo-cli的贡献部分对项目的贡献。贡献给node-mongo-cli 您...

    node-mongo-starter-kit:node-mongo-starter-kit的转译版本,属于node-mongo-cli项目的一部分

    node-mongo-starter-kit 这是的es6 +模板。 import express from 'express'; node-mongo-starter-kit帮助简化nodejs中的mongoDB开发。 通过简化了使用node-mongo-starter-kit的过程。 虽然您也可以选择直接从...

    bugu-mongo

    《Bugu-Mongo 1.12:深入解析开源MongoDB框架》 MongoDB,作为一个高性能、开源、无模式的文档型数据库,近年来在IT行业中备受瞩目,尤其在大数据处理和分布式存储领域更是表现出色。Bugu-Mongo是基于MongoDB开发的...

    重新封装了下node-mongo服务.zip

    # 重新封装了一下NODE-MONGO 使其成为一个独立的服务.可以直接通过get/post来操作 # consts.js 配置用的数据,用于全局参数配置 # log.js 自己写的一个简单的存储本地log的功能,数据库异常或者逻辑上产生异常数据的...

    nodejs+mongodb+express+ejs+connect-mongo

    **Node.js + MongoDB + Express + EJS + Connect-Mongo 知识点详解** Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它允许开发者在服务器端使用 JavaScript,提供了丰富的库和框架来简化开发流程。在...

    node-mongo-vagrant, 运行 Ubuntu 12.04.node.js 和MongoDB的Vagrant框.zip

    node-mongo-vagrant, 运行 Ubuntu 12.04.node.js 和MongoDB的Vagrant框 node.js/MongoDB/Ubuntu 12.04-64位 Vagrant框:如何使用按下载并安装VirtualBox点击这里。点击这里下载并安装 Vagrant 。克隆这里存储库。cd ...

    bugu-mongo-1.12

    《Bugu-Mongo 1.12:深入解析MongoDB的高效使用与优化》 MongoDB,作为一款流行的开源文档型数据库系统,以其强大的灵活性、高性能和易扩展性深受开发者喜爱。Bugu-Mongo 1.12是针对MongoDB的一个特定版本,此版本...

    node-oauth2-server-mongo-example.zip_mongo node_mongod_node-oaut

    本示例"node-oauth2-server-mongo-example.zip"是关于如何在Node.js环境中利用MongoDB(mongod)实现OAuth2.0服务器的一个实践案例。 首先,`node-oauth2-server`是一个流行的Node.js库,用于构建符合OAuth2.0规范...

    sql-to-mongo-db-query-converter:sql-to-mongo-db-query-converter

    sql-to-mongo-db-query-converter sql-to-mongo-db-query-converter可帮助您基于SQL中提供的查询为MongoDb构建查询。玛文向com.github.vincentrussell:sql-to-mongo-db-query-converter添加依赖...

    node-mongo-express-todoApp:NodeJs MongoDb和Express入门版todoApp

    这个“node-mongo-express-todoApp”项目就是一个很好的入门示例,帮助初学者理解如何将这三个强大的工具结合起来创建一个简单的Todo管理应用。 ### 1. Node.js Node.js是一个基于Chrome V8引擎的JavaScript运行...

    node-mongodb-native, Mongo DB原生NodeJS驱动程序.zip

    node-mongodb-native, Mongo DB原生NodeJS驱动程序 描述官方的 MongoDB驱动程序。 在核心插件之上提供一个高级 API,这意味着最终用户。的MongoDB node.js-驱动程序什么地方文档http://mongodb.github.io

    node-mongo-starter-cjs

    如何使用node-mongo-starter-cjs已经建立了开发环境,即与服务器和数据库,eslint和babel transpiler的连接。要在本地使用,您需要mongoDB并创建数据库和集合,然后运行mongoDB。如果您选择使用mongoDB atlas则无需...

    hapi-mongo-models, `mongo models`的hapi插件.zip

    hapi-mongo-models, `mongo models`的hapi插件 hapi-mongo-models一个hapi的 mongo-models 插件插件。 安装$ npm install hapi-mongo-models服务器插件在插件注册期间,我们使用提供的选项连接到

    api-node-koa-mongo-源码.rar

    标题 "api-node-koa-mongo-源码.rar" 暗示了这是一个关于使用 Node.js、Koa 框架和 MongoDB 数据库构建 API 的项目源代码。这个压缩包可能包含了一个完整的后端服务实现,用于处理 HTTP 请求并与 MongoDB 进行数据...

    lucid-mongo, 面向adonis框架的Mongodb ODM.zip

    在你的Adonis.js项目中,你可以通过npm安装`lucid-mongo`,然后在模型文件中配置连接并定义模型属性。一旦配置完成,你就可以开始利用`Mongolucid`提供的各种方法进行数据操作了。 总之,`lucid-mongo`是一个强大且...

    Laravel开发-laravel-mongo-cache

    本项目"laravel-mongo-cache"专注于在Laravel框架下集成MongoDB作为缓存驱动,这为开发者提供了更多存储选择,特别是对于那些处理大量非结构化数据或需要NoSQL数据库优势的项目来说,这是一个非常有价值的功能。...

    solr-mongo-importer-1.1

    这个工具的主要版本是"solr-mongo-importer-1.1",这表明它是1.1版,可能包含了对前一版本的改进和优化。 MongoDB是一个流行的NoSQL数据库系统,它以文档为中心,适合存储非结构化和半结构化的数据。而Solr是Apache...

Global site tag (gtag.js) - Google Analytics