第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);
      });
    });
  })
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值