MongoDB 从0开始

MongoDB

https://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/

在Mac上安装

brew update
brew install mongodb

运行

mkdir -p /data/db

mongod

这里是默认的运行路径 更多参数可以看这里https://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/

连接数据库
之前只是启动了数据库的服务 下面通过shell命令来连接数据库

mongo

列出数据库

> show dbs
local  0.078GB
test   0.078GB

切换数据库(同时可以新建数据库)

use databasename   

(这个时候表示在使用这个数据库 但是你通过show dbs看不到它 只有向一个数据库中插入过了数据 show dbs 才能看到它)

db.users.save({username:'hehe'})

向数据库中的users 这个collection插入了一条数据
collection 比较接近于表的概念
之后会返回刚才操作的结果

WriteResult({ "nInserted" : 1 })

通过show collections 可以看到所有的表

> show collections
system.indexes
users

删除
删除collection中所有数据
db.restaurants.remove( { } )
删除一个collection
db.restaurants.drop()
删除指定数据

db.recordsTest.remove({'periodInfo.loading.elapsed':{$gt:50000 }  })

查找

> db.users.find()
{ "_id" : ObjectId("562db21bf928090dc1a9a24f"), "username" : "hehe" }

修改

db.recordsTest.update({day:'2016-1-1'},{$set:{day:"2015-12-08"}},{multi:true})

和Node一起用

http://mongodb.github.io/node-mongodb-native/2.0/api/

新的API在建立db的时候和以前的API不同
(旧API仍然可以用)

比如很多书上OR博文中的例子都是这么写的

var mongodb = require('mongodb');
var db = new Db('your-db', new Server("127.0.0.1", Connection.DEFAULT_PORT, { auto_reconnect: true }));
  db.open(function(error, databaseConnection) {
    if (error) throw new Error(error);
    connectionInstance = databaseConnection;
    databaseConnection.collection('collectionName', function(error, collection) {
      collection.find().toArray(function(error, results) {
        //blah blah
      });
    });
  });

这里的databaseConnection 就是我们需要的数据库实例
怎么样才能让连接db这个部分更加通用呢

http://www.oschina.net/question/12_104851

我们需要一个全局的变量来存储这个connection

建立连接 connection.js

var connectionInstance;
 
module.exports = function(callback) {
  //if already we have a connection, don't connect to database again
  if (connectionInstance) {
    callback(connectionInstance);
    return;
  }
 
  var db = new Db('your-db', new Server("127.0.0.1", Connection.DEFAULT_PORT, { auto_reconnect: true }));
  db.open(function(error, databaseConnection) {
    if (error) throw new Error(error);
    connectionInstance = databaseConnection;
    callback(databaseConnection);
  });
};

操作数据库

var mongoDbConnection = require('./lib/connection.js');
 
exports.index = function(req, res, next) {
  mongoDbConnection(function(databaseConnection) {
    databaseConnection.collection('collectionName', function(error, collection) {
      collection.find().toArray(function(error, results) {
        //blah blah
      });
    });
  });
};

新API

http://mongodb.github.io/node-mongodb-native/2.0/api/

//client 就是 db
var client, collections = {};

module.exports.get = function(name, callback) {
  if (client) {
    getCollection(name, callback);
  } else {
    MongoClient.connect('mongodb://localhost:27017/test', function(err, db) {
      if (!err) {
        client = db; //db
        client.on('close', function() {
          client = null;
          collections = {};
        });
        getCollection(name, callback);
      } else {
        //error connecting...
        console.log('db open failed')
      }
    });
  }
}

posted @ 2015-10-26 19:45  cart55free99  阅读(204)  评论(0编辑  收藏  举报