1.从Node.js链接到MongoDB
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的更多相关文章
- React+Node.js+Express+mongoskin+MongoDB
首发:个人博客,更新&纠错&回复 采用React + Node.js + Express + mongoskin + MongoDB技术开发的一个示例,演示地址在这里,项目源码在这里. ...
- node.js高效操作mongodb
node.js高效操作mongodb Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为Jav ...
- Node.js:连接 MongoDB
ylbtech-Node.js:连接 MongoDB 1.返回顶部 1. Node.js 连接 MongoDB MongoDB是一种文档导向数据库管理系统,由C++撰写而成. 本章节我们将为大家介绍如 ...
- mongoose - 让node.js高效操作mongodb
Mongoose库简而言之就是在node环境中操作MongoDB数据库的一种便捷的封装,一种对象模型工具,类似ORM,Mongoose将数据库中的数据转换为JavaScript对象以供你在应用中使用. ...
- [译]简单得不得了的教程-一步一步用 NODE.JS, EXPRESS, JADE, MONGODB 搭建一个网站
原文: http://cwbuecheler.com/web/tutorials/2013/node-express-mongo/ 原文的源代码在此 太多的教程教你些一个Hello, World!了, ...
- [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 ...
- [转] 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 ...
- [js高手之路]Node.js+jade+express+mongodb+mongoose+promise实现todolist
promise主要是用来解决异步回调问题,其实还有好几种比promise更好的方案,后面再说,这节,我们先用promise来改造下,我以前写的一篇文章[js高手之路]javascript腾讯面试题学习 ...
- node.js(express)连接mongoDB入门指导
一.写在前面 人人都想成为全栈码农,作为一个web前端开发人员,通往全栈的简洁之路,貌似就是node.js了.前段时间学习了node.js,来谈谈新手如何快速的搭建自己的web服务,开启全栈之路. 二 ...
随机推荐
- MVP模式(Android)
以前在写项目的时候,没有过多考虑架构模式的问题,因为之前一直做J2EE开发,而J2EE都是采用MVC模式进行开发的,所以在搭建公司项目的时候,也是使用类似MVC的架构(严格来讲,之前的项目还算不上MV ...
- 记一次事件委托在 ios 下的兼容 bug
项目中碰到的兼容类 bug,记录一二. 页面上有几个同类型的控件,点击它们会触发一些事件,很显然,事件委托优于批量绑定.为了图方便,我将 click 事件绑定到了 document.body 上(绑定 ...
- c#资料
类型系统: 运行模型: 整型: 浮点: 财务: 布尔: 字符: 引用类型: Console控制字符: {序号,空间:控制字符与精度} 如:{0,3:C2} {空间:#.00} 其中,#表示该位置如果有 ...
- CCF 201604-4 游戏
/* 广度优先搜索 左右两个方向 node{x,y,step} 到了就返回step,不到就检查左右两边符合条件就入队. 用一个结构体保存 危险时间 time[i][j]{beg,time} beg=e ...
- Synchronized
1. 在编写一个类时,如果该类中的代码可能运行与多线程环境下,就要考虑同步问题了. 会同时被多个线程访问的资源,就是竞争资源,也称为竞争条件.对于多线程共享的资源我们必须进行同步,以避免一个线程的改动 ...
- SetEnvlfNoCase 记录从自己网站之外传来的请求
<FilesMatch \.(jpg|gif|png)$> SetEnvIfNoCase Referer "^http://www.example.com/" loca ...
- Android,不小心关闭了某个小窗口怎么恢复,方法介绍
Window > Show View > Other 需要哪个窗口就用哪个~
- Alpha阶段发布说明
Alpha版本功能介绍 机器法官功能已实现 这是我们统计了当下所有存在的狼人APP的共同缺点.也是用户最主要的痛点.现在所有已知存在的类似APP都不能提供法官功能,我们的APP将该功能革命性的自动实现 ...
- [bigdata] Spark RDD整理
1. RDD是什么RDD:Spark的核心概念是RDD (resilient distributed dataset),指的是一个只读的,可分区的弹性分布式数据集,这个数据集的全部或部分可以缓存在内存 ...
- bzoj 1065: [NOI2008] 奥运物流
1065: [NOI2008] 奥运物流 Description 2008北京奥运会即将开幕,举国上下都在为这一盛事做好准备.为了高效率.成功地举办奥运会,对物流系统 进行规划是必不可少的.物流系统由 ...