zoukankan      html  css  js  c++  java
  • 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')
          }
        });
      }
    }
    
    
  • 相关阅读:
    JAVA入门到精通-第42讲-坦克大战9
    JAVA入门到精通-第40讲-线程
    JAVA入门到精通-第37讲-事件总结-坦克大战5
    大数据 资源
    在线工具
    idea 添加 阿里代码规范
    idea 控制台中文乱码 解决方法
    idea 构建maven web项目
    oracle SQL 练习
    Oracle分页
  • 原文地址:https://www.cnblogs.com/cart55free99/p/4912177.html
Copyright © 2011-2022 走看看