用node.js体验mongodb的初级教程
终于到了第四次了。
在第一部分中,我们学习了关于node.js的基本知识,并制作了一个简单的Web服务器。
在第二部分中,我们学习了如何将代码分割到其他文件中,并使用路由和文件系统来在HTML中进行显示等操作。
在第三部分中,我们尝试创建了一个简单的应用程序。
这次作为上一次应用程序的延续,我们尝试进行已保存数据的持久化(保存到数据库中)。
(为了避免变得很长,这次只连接到MongoDB)。
MongoDB是一种基于文档的NoSQL数据库系统。
这是一个与node.js兼容性良好的高速NoSQL数据库。
最近的NoSQL数据库包括键值存储(KVS)、文档导向数据库和列导向数据库等,而MongoDB是一种无模式的文档导向数据库。
通过不加入事务或关系(JOIN)功能,MongoDB实现高速且与键值存储(KVS)相当水平的性能。
特别对实时处理非常强劲,与node.js非常搭配完美。
MongoDB与RDB的对比
以下是RDB中使用的术语与MongoDB中使用的术语的对应关系。
需要记住的是,MongoDB是一个无模式的文档导向数据库。由于无模式,不需要像关系数据库一样进行列定义。
如果创建一个以关系型数据库(RDB)来管理用户的表,那么每个列的类型会被指定,比如id(整数型),name(字符串型)和created_at(日期时间型),因此每条记录都会包含相同类型的数据。
但是,对于MongoDB来说,可以为每个文档定义自由字段。
尝试使用node.js处理MongoDB。
首先,我想先安装并尝试连接。
$ npm install mongodb
实际上,在将测试数据放入数据库并进行获取的部分时,会变成这样的感觉。
我尝试将 config.db 中的数据库命名为 testdb。
var mongoClient = require('mongodb').MongoClient;
var config = require('./config');
mongoClient.connect("mongodb://localhost/" + config.db, function(err, db) {
// エラー処理
if (err) {
return console.dir(err);
}
db.collection("users", function(err, collection) {
if (err) {
return console.dir(err);
}
// 挿入するデータ
var docs = [
{name: "山口", score: 20},
{name: "大田", score: 80},
{name: "長本", score: 100},
];
collection.insert(docs, function(err, result) {
// エラー処理
if (err) {
return console.dir(err);
}
});
// 検索する
collection.find().toArray(function(err, items) {
console.log(items);
});
});
});
我会尝试搜索
我们之前通过find()函数获取了全部的数据,现在让我们实际进行搜索,看看mongo是什么样的。
var mongoClient = require('mongodb').MongoClient;
var config = require('./config');
mongoClient.connect("mongodb://localhost/" + config.db, function(err, db) {
// エラー処理
if (err) {
return console.dir(err);
}
db.collection("users", function(err, collection) {
if (err) {
return console.dir(err);
}
// 検索する
collection.find({name: "長本"}).toArray(function(err, items) {
console.log(items);
});
});
});
只需使用find指定条件,即可获取相应内容。
$ node mongo.js
[ { _id: 59b69c558e9ce1484773fffd, name: '長本', score: 100 } ]
这个结构很简单。
下次,我计划将上一次创建的应用程序的数据保存到mongodb,并尝试检索数据以实现数据的持久化。