MongoDB采用了MongoDB Node.js驱动程序作为标准。

1.安装MongoDB驱动

npm install mongoDB
npm install mongoose

require('mongodb')可以访问mongodb模块

2.从Node.js连接到MongoDB

可以通过打开到MongoDB服务器的连接开始从Node.js应用程序访问MongoDB.

连接用来:创建,更新存取MongoDB数据库中的接口

访问MongoDB最佳方法:通过mongodb模块中的MongoClient类。

1)创建MongoClient对象的一个实例,通过该对象创建和管理MongoDB的连接。

2)使用连接字符串进行连接

2.1.写入关注

连接和更新MongoDB服务器上的数据前,要决定连接上实现什么级别的写入关注。

write concern 指的是:在报告写操作成功的时候,MongoDB连接提供的保证

2.2.了解Server对象

MongoClient连接利用了在后台的Server对象。这个对象定义了MongoDB驱动程序应该怎样连接到服务器。

Server对象包含:创建连接时所用的主机,端口,池的大小,以及套接字的超时值的信息。

Server对象选项:readPreference ssl poolSize socketOptions auto_reconnect

2.3.通过client对象连接到MongoDB

使用MongoClient对象连接到MongoDB涉及创建客户端的一个实例,打开到数据库的连接,以及如果需要,验证到数据库,然后根据需要处理注销和关闭。

MongoClient(Server,options)

Server为第一个参数,第二个参数规定了数据库的连接选项

var client=new MongoClient(new Server('localhost',27017,{poolSize:5}),retryMiliSeconds:500);

一旦创建了MongoClient,可以通过open(callback)打开到服务器的MongoDB数据库的连接。

(新版本废除了client.open()方法)

client.open(function(err,client){...})

连接到特定的数据库,需要在client对象上使用db(databasename)方法创建数据库实例。可以使用数据库连接选项,创建可用于访问特定数据库的集合中的db对象实例。如果启用了身份验证,在尝试访问前:

db.authenticate(username,password,callback)验证到数据库

var db=client.db("testDB");
db.authenticate("dbadmin","test",function(err,results){...})

要注销数据库,使用对象上的logout()方法。将关闭到数据库的连接

db.logout();

要关闭到MongoDB的连接,在客户端上调用close()

client.close()

2.4.通过连接字符串连接到MongoDB

可以使用一个简单的连接字符串创建,打开,并验证到数据库的连接。

用于连接到数据库的Server和MongoClient选项在后台生成。

MongoClient.connect(connString,options,callback)

connString字符串的语法如下:

mongodb://username:password@host:port/database?options

options可以包含db,server,rplSet和mongos属性的一个对象  

3.在MongoDB Node.js驱动程序中的对象

MongoDB Node.js驱动程序使用了大量的结构化对象与数据库进行交互。  

Db对象:提供对数据库的访问。(连接,添加用户,访问集合) 数据库创建,Db对象被创建

Admin对象:对MongoDB数据库执行管理职能。专门代表到admin数据库的连接

Collection对象:数据库的集合。可以使用Collection对象访问集合中的条目,添加文档,查询文档。。

4.访问和操作数据库

提供了从Node.js应用程序创建并管理数据库的能力。

列出数据库

var MongoClient=require('mongodb').

4.1.列出数据库  

要列出一个系统中的数据库,需要在Admin对象上使用listDatabases()

数据库列表在回调函数的第二个参数中返回,并且是数据库对象的一个简单的数组。

var MongoClient=require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost/admin",function(err,db){
var admainDB=db.admin();
adminDB.listDatabases(function(err,databases){
console.log("before add database list: ");
console.log(database);
})
})

4.2.创建数据库

MongoClient连接Db对象上的Db()方法创建一个新的Db对象实例。调用Db对象实例上的createCollection()来创建数据库。

新版直接用 var newDB=db.db("newDB");

4.3.删除数据库

Db实例的dropDatabase()方法删除  

var MongoClient=require('mongodb').MongoClient;
MongoClient.connect("mongodb://localhost/",function(err,db){
var adminDB=db.admin();
adminDB.listDatabases(function(err,databases){
console.log("before add database list:");
console.log(databases);
});
var newDB=db.db("newDB");
newDB.createCollection("newCollection",function(err,collection){
if(!err){
console.log("new database and collection created");
adminDB.listDatabases(function(err,databases){
console.log("after add database list:");
console.log(databases);
db.db("newDB").dropDatabase(function(err,results){
if(!err){
console.log("database dropped");
setTimeout(function(){
adminDB.listDatabases(function(err,results){
var found=false;
for(var i=0;i<results.databases.length;i++){
if(results.databases[i].name=="newDB")
found=true;
}
if(!found){
console.log('after delete database list: ');
console.log(results);
}
db.close();
})
},1500)
}
})
})
}
})
})

4.5.获取MongoDB服务器的状态

admin对象的另一大特性,具有获取有关MongoDB的服务器状态信息的能力。

主机名,版本,运行时间,打开的游标

Admin对象的serverStatus()方法

  

 

  

  

  

  

1.从Node.js链接到MongoDB的更多相关文章

  1. React+Node.js+Express+mongoskin+MongoDB

    首发:个人博客,更新&纠错&回复 采用React + Node.js + Express + mongoskin + MongoDB技术开发的一个示例,演示地址在这里,项目源码在这里. ...

  2. node.js高效操作mongodb

    node.js高效操作mongodb Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为Jav ...

  3. Node.js:连接 MongoDB

    ylbtech-Node.js:连接 MongoDB 1.返回顶部 1. Node.js 连接 MongoDB MongoDB是一种文档导向数据库管理系统,由C++撰写而成. 本章节我们将为大家介绍如 ...

  4. mongoose - 让node.js高效操作mongodb

    Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...

  5. [译]简单得不得了的教程-一步一步用 NODE.JS, EXPRESS, JADE, MONGODB 搭建一个网站

    原文: http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/ 原文的源代码在此 太多的教程教你些一个Hello, World!了, ...

  6. [MEAN Stack] First API -- 1. with Node.js, Express and MongoDB

    Learn how to import data into your MongoDB and then use Express to serve a simple Node.js API. Impor ...

  7. [转] Creating a Simple RESTful Web App with Node.js, Express, and MongoDB

    You can find/fork the sample project on GitHub Hey! This and all my other tutorials will soon be mov ...

  8. [js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist

    promise主要是用来解决异步回调问题,其实还有好几种比promise更好的方案,后面再说,这节,我们先用promise来改造下,我以前写的一篇文章[js高手之路]javascript腾讯面试题学习 ...

  9. node.js(express)连接mongoDB入门指导

    一.写在前面 人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了.前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路. 二 ...

随机推荐

  1. bootstrap的介绍 和使用

    开发中文网: v3.bootcss.com   前端?框架? 用户 -->  前端应用程序 --->后端应用程序 --->后端服务器. 框架:Library 或者lib,都指得是框架 ...

  2. CWMP开源代码研究3——ACS介绍

    声明:本文涉及的开源程序代码学习和研究,严禁用于商业目的. 如有任何问题,欢迎和我交流.(企鹅号:408797506) 本文介绍自己用过的ACS,其中包括开源版(提供下载包)和商业版(仅提供安装包下载 ...

  3. 用table做网页,设置了border为1px怎么还是觉得很粗?

    设置边框重叠 border-collapse:collapse;  /*边框重叠*/ 例: <table width="700" style="border-col ...

  4. 有利于SEO的DIV+CSS的命名规则

    搜索引擎优化(seo)有很多工作要做,其中对代码的优化是一个很关键的步骤.为了更加符合SEO的规范,下面是目前流行的CSS+DIV的命名规则: 页头:header登录条:loginBar标志:logo ...

  5. 微信小程序开发工具使用与设计规范(二)

    [未经作者本人同意,请勿以任何形式转载] 上一篇文章主要分析了微信小程序应用场景和优劣势.本篇你可以学习到: 如何使用小程序开发工具写一个Hello World 微信小程序设计规范 微信小程序项目结构 ...

  6. JavaScript 特殊对象 Array-Like Objects 详解

    这篇文章拖了有两周,今天来跟大家聊聊 JavaScript 中一类特殊的对象 -> Array-Like Objects. (本文节选自 underscore 源码解读系列文章,完整版请关注 h ...

  7. 转载(sublime text 2 调试python时结果空白)

    sublime text 2 调试python时结果空白 之前用的时候都一切正常,今天突然就出现了这个问题.按ctrl+b执行的时候结果只有空白,查了很多文章都只提到了中文路径.系统路径等等,没有解决 ...

  8. Android四大组件之—— BroadcastReceiver的使用

    BroadcastReceiver又名广播接收者.既然它用于接收广播,那一定就有人负责发送. Android系统中的广播: 在现实生活中,我们都知道广播是什么,用来做什么.例如公园里的广播,主要通知游 ...

  9. 常见排序java实现

    public class Sort { public static void main(String[] args) { int[] data = {49,38,65,97,76,13,27,49}; ...

  10. 我的.NET自学之路

    我第一门语言接触的并不是.net,而是php刚学php感觉还好,但是一学到后面就有一点头晕乎乎的,我感觉没有一个好的编写php代码的编辑器.而且php是弱类型语言,感觉起来没有像c,java,c#这些 ...