通过node.js使用mongodb

标签: 计算机技术 javascript mongodb node.js | 发表时间:2012-03-01 19:15 | 作者:Marshal
出处:http://marshal.easymorse.com

在之前示例的基础上( 解析web网页并保存页面中的图片),我们要将文档对象TankBook保存到数据库中。

下面先讲一下mongodb的基本操作,再结合使用nodejs代码。

数据库简单操作

准备

数据库选用的是mongodb,如何安装可参见 怎样在ubuntu 11.10下安装mongodb 2.0。如果要在本地安装,可在 这里下载对应平台的安装包。

插入记录

安装mongodb后,可在test数据库中创建表和记录。mongodb是面向文档的数据库,传统数据库中记录,等同于它的文档,表等同于集合。

我们要创建一个文档,就是把 解析web网页并保存页面中的图片示例中的TankBook对象作为文档保存起来。可在命令行里这样实现:

db.books.insert({‘title’:'坦克’,'coverImageUrl’:'/Iraq-m1_abrams.jpg/300px-Iraq-m1_abrams.jpg’})

这里books集合,当系统发现不存在的时候会自动创建。

如果不使用命令行,我建议使用mongohub。应该也有windows版本,我使用Mac版本。插入操作的截图:

查询记录

之后,我们可以考虑如何查出内容,命令行:

db.books.find()

这将打印出全部的文档,类似于SQL的:

select * from books;

如果使用mongohub:

使用nodejs

准备

nodejs是个强大的平台,有基本功能,而且可以挂很多模块。我们现在需要和mongodb连接的驱动,就类似比如mysql的java驱动一样。

安装:

npm install mongod

这个驱动的全称是node mongodb native,网址 在这里。nodejs有好几个mongodb的第三方驱动。和jdbc不一样,没有标准。所以需要到驱动的网站上去了解学习怎么使用它访问mongodb。

代码

代码分两部分,加载mongodb模块:

var $ = require(‘jquery’),
fs = require(‘fs’),
mongodb = require(‘mongodb’),
http = require(‘http’);

然后是使用它插入或者查看文档集合:

function saveToDb() {
var server = new mongodb.Server(‘marshal.easymorse.com’, 27017),
connect = new mongodb.Db(‘test’, server);

connect.open(function (err, db) {
db.collection(‘books’, function (err, collection) {
collection.find(function (err, cursor) {
cursor.each(function (err, doc) {
if (doc) {
console.log(‘doc.title:’ + doc.title);
}
});
});

// collection.insert(tankBook);
});
});

其中,第二段是游标遍历文档集合。第三段,被屏蔽掉的,是插入文档集合。

完整的源代码,见: https://github.com/MarshalW/TankManual/blob/v0.3/app.js

 

 

相关 [node js mongodb] 推荐:

node js 断点调试

- - Web前端 - ITeye博客
大部分基于 Node.js 的应用都是运行在浏览器中的,. 例如强大的调试工具 node-inspector. node-inspector 是一个完全基于 Node.js 的开源在线调试工具,提供了强大的调试功能和友好. 的用户界面,它的使用方法十分简便. 首先,使用 npm install -g node-inspector 命令安装 node-inspector,然后在终.

什么是Node?

- We_Get - 博客园新闻频道
译者按:前不久Oreilly出了一本小册子“What is Node?”,扼要的讲解了Node的身世和所适用的场景,作者文笔轻松流畅、内容充实,是非常难得的学习资料.   译文全文:http://jayli.github.com/whatisnode/index.html.   作者:Brett McLaughlin ,原文:What is Node?.

Node入门

- - CSDN博客编程语言推荐文章
作者:  Manuel Kiessling. 翻译:  goddyzhao &  GrayZhang &  MondayChen. 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识. 本书绝不是一本“Hello World”的教程. 你正在阅读的已经是本书的最终版.

浅析Hadoop Secondary NameNode,CheckPoint Node,Backup Node

- - CSDN博客云计算推荐文章
Hadoop SecondaryNameNode并不是Hadoop 第二个NameNode,它不提供NameNode服务,而仅仅是NameNode的一个工具. 这个工具帮助NameNode管理Metadata数据. NameNode的HDFS文件信息(即Metadata)记录在内存中,client的文件写操作直接修改内存中的Metadata,同时也会记录到硬盘的Edits文件,这是一个Log文件.

[译]什么是Node?

- blacktulip - Taobao UED Team
译者按:前不久Oreilly出了一本小册子“What is Node?”,扼要的讲解了Node的身世和所适用的场景,作者文笔轻松流畅、内容充实,是非常难得的学习资料. 译文全文:http://jayli.github.com/whatisnode/index.html. 作者:Brett McLaughlin ,原文:What is Node?.

[mongodb] java操作mongodb

- - 数据库 - ITeye博客
           //实例化Mongo对象,连接27017端口.                               //连接名为yourdb的数据库,假如数据库不存在的话,mongodb会自动建立. //从Mongodb中获得名为yourColleection的数据集合,如果该数据集合不存在,Mongodb会为其新建立.

用node作桌面开发

- InterMa - CNode社区
node的定位是,server-side javascript. 但程序员最爱做的事,就是把一个东西用在不该用的地方. 那么,可以把node用在桌面开发上吗. 把Javascript用在桌面开发上,早有先例,比如GTK+的gjs,还有Qt的QML(顺带一提,QML代表着桌面开发的另一个方向,a promising way),GNOME3中,也用javascript作为桌面插件的开发语言.

Vercel 部署 Node 服务

- - 掘金 前端
之前在写 面试常客:HTTP 缓存时,曾经就强缓存和协商缓存写过两个demo,但缓存要在服务端做,只能贴上代码,不能在网页上感受(虽然我贴了gif). 笔者的所有 demo 例子都放在 github page 上,其特点是不需要服务器即可部署静态资源,但它不具备部署服务端应用能力. 最近笔者在了解 CI/CD 方面的知识点,想起了 Vercel,就想着能否将服务端应用架在 vercel 上呢.

【MongoDB】MongoDB之优化器Profiler

- - CSDN博客数据库推荐文章
在mysql数据库中,慢查询日志经常作为优化数据库的依据, mongodb中依然有类似的功能. Mongodb自带的profiler,可以方便地记录所有耗时的操作,以便于调优;. 一、开始profiler功能. 开启profier功能有两种:. 第一种就是直接在启动参数里面进行设置,就在茄冬mongodb时候添加-profile=级别.