Node.js 連接 MongoDB
MongoDB是一種文檔導向數據庫管理系統,由C++撰寫而成。
本章節我們將為大家介紹如何使用 Node.js 來連接 MongoDB,並對數據庫進行操作。
如果你還沒有 MongoDB 的基本知識,可以參考我們的教程:MongoDB 教程。
安裝驅動
本教程使用了淘寶定制的 cnpm 命令進行安裝:
$ cnpm install mongodb
接下來我們來實現增刪改查功能。
數據庫操作( CURD )
與 MySQL 不同的是 MongoDB 會自動創建數據庫和集合,所以使用前我們不需要手動去創建。
插入數據
以下實例我們連接數據庫 runoob 的 site 表,並插入兩條數據:
插入數據
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob'; # 數據庫為 runoob
var insertData = function(db, callback) {
//連接到表 site
var collection = db.collection('site');
//插入數據
var data = [{"name":"菜鳥教程","url":"www.runoob.com"},{"name":"菜鳥工具","url":"c.runoob.com"}];
collection.insert(data, function(err, result) {
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
}
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("連接成功!");
insertData(db, function(result) {
console.log(result);
db.close();
});
});
執行以下命令輸出就結果為:
$ node test.js
連接成功!
{ result: { ok: 1, n: 2 },
ops:
[ { name: '菜鳥教程',
url: 'www.runoob.com',
_id: 58c25e13a08de70d3b9d4116 },
{ name: '菜鳥工具',
url: 'c.runoob.com',
_id: 58c25e13a08de70d3b9d4117 } ],
insertedCount: 2,
insertedIds: [ 58c25e13a08de70d3b9d4116, 58c25e13a08de70d3b9d4117 ] }
從輸出結果來看,數據已插入成功。
我們也可以打開 MongoDB 的客戶端查看數據,如:
> show dbs
admin 0.000GB
local 0.000GB
runoob 0.000GB # 自動創建了 runoob 數據庫
> show tables
site # 自動創建了 site 集合(數據表)
> db.site.find() # 查看集合中的數據
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鳥教程", "url" : "www.runoob.com" }
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c9"), "name" : "菜鳥工具", "url" : "c.runoob.com" }
>
查詢數據
以下實例檢索 name 為 "菜鳥教程" 的實例:
查詢數據
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob';
var selectData = function(db, callback) {
//連接到表
var collection = db.collection('site');
//查詢數據
var whereStr = {"name":'菜鳥教程'};
collection.find(whereStr).toArray(function(err, result) {
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
}
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("連接成功!");
selectData(db, function(result) {
console.log(result);
db.close();
});
});
執行以下命令輸出就結果為:
連接成功!
[ { _id: 58c25f300cd56e0d7ddfc0c8,
name: '菜鳥教程',
url: 'www.runoob.com' } ]
更新數據
我們也可以對數據庫的數據進行修改,以下實例將 name 為 "菜鳥教程" 的 url 改為 https://www.runoob.com:
更新數據
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob';
var updateData = function(db, callback) {
//連接到表
var collection = db.collection('site');
//更新數據
var whereStr = {"name":'菜鳥教程'};
var updateStr = {$set: { "url" : "https://www.runoob.com" }};
collection.update(whereStr,updateStr, function(err, result) {
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
}
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("連接成功!");
updateData(db, function(result) {
console.log(result);
db.close();
});
});
執行成功後,進入 mongo 管理工具查看數據已修改:
> db.site.find()
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鳥教程", "url" : "https://www.runoob.com" }
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c9"), "name" : "菜鳥工具", "url" : "c.runoob.com" }
刪除數據
以下實例將 name 為 "菜鳥工具" 的數據刪除 :
刪除數據
var MongoClient = require('mongodb').MongoClient;
var DB_CONN_STR = 'mongodb://localhost:27017/runoob';
var delData = function(db, callback) {
//連接到表
var collection = db.collection('site');
//刪除數據
var whereStr = {"name":'菜鳥工具'};
collection.remove(whereStr, function(err, result) {
if(err)
{
console.log('Error:'+ err);
return;
}
callback(result);
});
}
MongoClient.connect(DB_CONN_STR, function(err, db) {
console.log("連接成功!");
delData(db, function(result) {
console.log(result);
db.close();
});
});
執行成功後,進入 mongo 管理工具查看數據已刪除:
> db.site.find()
{ "_id" : ObjectId("58c25f300cd56e0d7ddfc0c8"), "name" : "菜鳥教程", "url" : "https://www.runoob.com" }
>