第5章-MongoDB、Mongoskin特性-5.4.Node.js版原生MongoDB驅動示例

首先,先安裝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);
      });
    });
  })
});
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章