Node.js和MongoDB - MongoJS入门
第一次尝试翻译外国牛人的博文,希望大家喜欢。
本文源码详见:https://github.com/njaulj/mongojs
一点都不夸大的说,近年来node.js和mongodb的确是大放异彩,在web界刮起了一股旋风。
node.js和mongodb不仅仅是一些Geeke的宠物,而是越来越多的大企业也在发展这两门技术,并且起到了杠杆作用,越来越多的用户正在使用这两门利器搭建了,高拓展性、高表现性、高功能性的web程序。
好了,言归正传。
什么是node.js?
node.js是一个立基于Chrome JavaScript Runtime的平台,任何人都可以轻松的用它来部署、开发高速的、高扩展、大吞吐大网络程序。
node.js的两种特性:
1.事件驱动
2.无阻塞的I/O
正是这两种特性使得node.js轻量和高效,在分布式设备上能够轻松的部署实时的数据密集型的程序。
什么是MongoDB?
MongoDB是一个高扩展性、高表现性的开源Nosql 数据库。
本文会从最基础node.js和MongoDB程序开始,首先请确认你已经安装了node.js和MongoDB。
OK,让我们来核实一下你的node.js和mongodb server吧:
$ node -v
$ mongod
介绍一下MongoJS?
MongoJS是一个才华横溢的轻量的Node.js包。你可以通过它使用一个非常类似于MongoDB‘s Javascript shell的API,从而轻松的连接到MongoDB!
安装MongoJS
$ npm install mongojs
OK,我们可以开始搭建我们的JS程序了,并且连接到我们的MongoDB 数据库:
// app.js
var databaseUrl ="mydb";// "username:password@example.com/mydb"
var collections =["users","reports"]
var db =require("mongojs").connect(databaseUrl, collections);
databaseUrl 包含了数据库服务器主机和端口,数据库名字的连接信息。
系统默认的host是localhost,端口是27017.如果你是在开发者环境中的话,databaseUrl只需要包含实际的数据实例名字计科。
collections是一个数组的数据类型。它不是强制的如此,只是为了接近Node.js API让我们更轻松的模拟MongoDb Javascript 客户端。
下面将通过一个例子(给定找到条件来查找所有的女性用户)来查找记录。
// app.js
db.users.find({sex:"female"},function(err, users){
if( err ||!users) console.log("No female users found");
else users.forEach(function(femaleUser){
console.log(femaleUser);
});
});
请注意我们是如何初始化我们的查询语句的。除此之外,我们还通过一个回调函数来管理query出来的结果。
node.js是事件驱动的,通过回调函数能够让你的程序没有阻塞,并且高表现性。
通过运行上面的程序,我们发现 No femail users found。为什么呢?
哈哈,不用大惊小怪,我们还没有往mydb数据库里面添加数据呢?
下面我将通过程序往mydb数据库里面增加几行代码!
// app.js
db.users.save({email:"717010686@qq.com", password:"iLoveMongo", sex:"male"},function(err, saved){
if( err ||!saved ) console.log("User not saved");
else console.log("User saved");
});
db.users.save({email:"18251888949@163.com", password:"iLoveMongo", sex:"female"},function(err, saved){
if( err ||!saved ) console.log("User not saved");
else console.log("User saved");
});
下一个例子是如何更新用户信息:
// app.js
db.users.update({email:"717010686@qq.com"},{$set:{password:"iReallyLoveMongo"}},function(err, updated){
if( err ||!updated ) console.log("User not updated");
else console.log("User updated");
});
OK,让我们来运行app.js吧。
$ node app.js
OK,在这里我们就成功的完成了node.js和MongoDB的入门了。
原著见:http://howtonode.org/node-js-and-mongodb-getting-started-with-mongojs
推广 http://www.keepol.com
Node.js和MongoDB - MongoJS入门的更多相关文章
- 以太坊开发DApp实战教程——用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台(一)
第一节 简介 欢迎和我们一起来用以太坊开发构建一个去中心化电商DApp!我们将用区块链.星际文件系统(IPFS).Node.js和MongoDB来构建电商平台类似淘宝的在线电商应用,卖家可以自由地出售 ...
- Node.js 中MongoDB的基本接口操作
Node.js 中MongoDB的基本接口操作 连接数据库 安装mongodb模块 导入mongodb模块 调用connect方法 文档的增删改查操作 插入文档 方法: db.collection(& ...
- MongoDB学习(2)—Node.js与MongoDB的基本连接示例
前提 已经安装了node.js和MongoDB,本文使用的node.js是v0.12.0,MongoDB是3.0.0. 初始化数据 启动MongoDB服务,在test数据库中插入一条实例数据: db. ...
- 使用React、Node.js、MongoDB、Socket.IO开发一个角色投票应用的学习过程(三)
这几篇都是我原来首发在 segmentfault 上的地址:https://segmentfault.com/a/1190000005040834 突然想起来我这个博客冷落了好多年了,也该更新一下,呵 ...
- Node.js与MongoDB的基本连接示例
Node.js与MongoDB的基本连接示例 前提 已经安装了node.js和MongoDB,本文使用的node.js是v0.12.0,MongoDB是3.0.0. 初始化数据 启动MongoDB服务 ...
- [Node.js]连接mongodb
摘要 前面介绍了node.js操作mysql以及redis的内容,这里继续学习操作mongodb的内容. 安装驱动 安装命令 cnpm install mongodb 安装成功 数据库操作 因为mon ...
- node.js+express+mongodb
主要是想用node.js链接mongodb,用的是mongoose.用ejs引擎,扩展到.html比较容易 小例子结构简单,框架清晰. 提交方法 路径 方法 作用 get add post a ...
- Node.js+websocket+mongodb实现即时聊天室
ChatRoom Node.js+websocket+mongodb实现即时聊天室 A,nodejs简介:Node.js是一个可以让javascript运行在服务器端的平台,它可以让javascrip ...
- node.js和MongoDB学习网址
回想我写的node.js和MongoDB的博客,都是菜鸟教程那里的知识,所以我打算不写了,那些都是基础,在项目开发中,我发现单单有那些基础不行,这些基础可以尽快学好,然后学习项目开发过程 下面是两个教 ...
随机推荐
- Gaussian Discriminant Analysis
如果在我们的分类问题中,输入特征$x$是连续型随机变量,高斯判别模型(Gaussian Discriminant Analysis,GDA)就可以派上用场了. 以二分类问题为例进行说明,模型建立如下: ...
- (一)javascript中的数组index属性——获取数组的索引值
例如:要做到这样的效果 点击每个选项时,会显示不同的div. 我们的做法:在javascript中,先把所有的div的display设置为none,然后在根据当前的数组里的索引值进行一个显示div的过 ...
- vsftpd给root设置访问权限
1:Linux下安装vsftpd之后,默认的配置是匿名用户可以登录,匿名帐户有两个:用户名:anonymous密码:空 用户名:ftp密码:ftp 2:如果要用匿名进行上传删除等操作需要配置其它参数. ...
- HashMap(JDK1.8)源码剖析
在JDK1.6中,HashMap采用位桶+链表实现,即使用链表处理冲突,同一hash值的Entity都存储在一个链表里.但是当位于一个桶中的元素较多,即hash值相等的元素较多时,通过key值依次查找 ...
- Ubuntu 安装php_intl 扩展
PHP Intl 类在I18n的网站中真的很方便,允许你依赖在终端用户区域,很容易的输出正确的日期格式. 在使用 yii2-app-ecom , 初始化之后,访问首页出现了: The default ...
- [记录]使用setTimeout实现不同时间进行切换文本的颜色
开始使用的是setinterval(),但是setinterval()的time是固定的,假如我想改变time,就需要每次clearInterval()一次. 如: setInterval(funct ...
- PHP 使用get_class_methods()和array_diff() 兩個相同的類中方法差集
进行二次开发时,习惯一份是原封不动的,一份正在修改.在修改时,发现修改的缺少原项目中的一些方法.本打算一个方法一个方法的对比,可是这样会比较花时间,划不来,PHP可以使用get_class_metho ...
- Swift函数|闭包
在编程中,我们常把能完成某一特定功能的一组代码,并且带有名字标记类型叫做函数,在C语言中,我们知道函数名就是一个指针,它指向了函数体内代码区的第一行代码的地址,在swift中也具有同样的功效. 在Sw ...
- gd库复制图片做水印
将复制源图片的某个位置复制到目标图片中,不能调整大小 imagecopy(目标图片画布,复制源画布,目标画布左上角x,y,源画布左上角x,y,复制图片的宽,高); 允许调整大小 imagecopyre ...
- scala中的call-by-name和call-by-value
http://www.jianshu.com/p/93eefcb61d4f val和def的区别 在scala中,可以用val和def前缀来定义变量,例如: val x = 1 def y = &qu ...