首先,先安裝MongoDB的Node.js版原生驅動:
$npm install mongodb@1.3.23
不要忘了包含package.json文件的依賴關係:
{
"name": "node-example",
"version": "0.0.1",
"dependencies: {
"mongodb": "1.3.23",
...
},
"engines": {
"node": ">=0.6.x"
}
}
一、Node.js腳本連接本地MongoDB
1.聲明依賴關係
2.定義數據庫主機和端口
3.建立數據庫連接
4.創建數據庫文檔
5.輸出一個新創建的文檔/對象
========================華麗麗的分割線============================================
文件mongo-native-insert.js如下:
var mongo = require('mongodb'),
dbHost = '127.0.0.1',
dbPort = 27017;
var Db = mongo.Db;
var Connection = mongo.Connection;
var Server = mongo.Server;
var db = new Db ('local', new Server(dbHost, dbPort), {safe:true});
db.open(function(error, dbConnection){
if (error) {
console.error(error);
process.exit(1);
}
console.log('db state: ', db._state);
item = {
name: '深情小建'
}
dbConnection.collection('messages').insert(item, function(error, item){
if (error) {
console.error(error);
process.exit(1);
}
console.info("created/inserted: ", item);
db.close();
process.exit(0);
});
});
========================華麗麗的分割線============================================
1.獲得message集合中的一條數據
2.輸出出來
3.給hi值添加一個屬性文字
4.將這條數據保存回message集合中
安裝完後我們的mongo-native.js中就包括了MongoDB庫:
var util = require('mongodb');
var mongo = require('mongodb');
這是一種和MongoDB服務建立連接的方法,db變量在指定的主機和端口上保持了對數據庫的引用:
var mongo = require('mongodb'),
dbHost = '127.0.0.1',
dbPort = 27017;
var Db = mongo.Db;
var Connection = mongo.Connection;
var Server = mongo.Server;
var db = new Db ('local', new Server(dbHost, dbPort), {safe:true});
打開一個連接輸入如下命令:
db.open(function(error, dbConnection){
// 執行數據庫相關操作
// console.log(util.inspect(db));
console.log(db._state);
db.close();
});
檢查完後再退出是一個很好的習慣:
db.open(function(error, dbConnection){
if (error) {
console.error(error);
process.exit(1);
}
console.log('db state: ', db._state);
現在可以進行剛提到的第一步—從message集合中取出一條數據。本文檔是item變量中的:
dbConnection.collection('messages').findOne({}, function(error, item){
if (error) {
console.error(error);
process.exit(1);
}
第二步,輸出值,如下:
console.info('findOne: ', item);
如你所見,控制檯上的方法和Node.js沒有多大不同。
讓我們繼續看看剩下的兩步:添加新的屬性和保存文檔。
item.text = 'hi';
var id = item._id.toString(); // 可以把ID存成字符串
console.info('before saving: ', item);
dbConnection.collection('messages').save(item, function(error, item){
console.info('save: ', item);
爲了複查保存的對象,我們使用之前find方法保存的ObjectID(id變量)。這個方法返回一個指針,因此我們用toArray()方法引出標準的JavaScript數組:
dbConnection.collection('messages').find({_id: new mongo.ObjectID(id)}).toArray(function(error, items){
console.info('find: ', items);
db.close();
process.exit(0);
});
});
})
});