美文网首页我爱编程
Node对MongoDB的简单操作

Node对MongoDB的简单操作

作者: 林_Han | 来源:发表于2017-11-15 10:27 被阅读0次

    MongoDB

    MongoDB的运行

    1. 下载、安装好MongoDB,并在MongoDB的根目录下创建一个data目录,然后在data目录下创建db目录 (MongoDB将数据目录存储在db目录下,若无此操作,将无法运行MongoDB)
      image
    2. cd到MongoDB的安装目录下的bin目录中,运行
    F:\MongoDB\bin\mongod --dbpath F:\data\db
    // 具体路径根据自己的安装情况来
    
    image
    1. 然后双击bin目录下的mongo.exe运行MongoDB,成功运行之后访问 http://localhost:27017/ 显示以下提示即为运行成功
      image

    Node

    在项目中安装MongoDB

    npm install mongodb
    

    插入数据

    关键语句

    insert(document)
    

    参数说明

    • document:需要插入的数据,键值对的形式

    代码

    // 引入mongodb模块
    var MongoClient = require('mongodb').MongoClient; 
    // 创建要连接的数据库对象
    var DB_CONN_STR = 'mongodb://localhost:27017/index';
    
    var insertData = function (db, callback) {
        var collection = db.collection('person');  // 连接将要操作的表(person为数据库index中的一个表)
        // 要插入的数据
        var data = [{
            "name": "Han",
            "age": "21"
        }, {
            "name": "ZLHan",
            "age": "23"
        }];
        // 执行插入
        collection.insert(data, function (err, result) {
            if (err) {
                console.log('Error:' + err);
                return;
            }
            callback(result);
        })
    }
    MongoClient.connect(DB_CONN_STR, function (err, db) {
        console.log('连接成功!');
        insertData(db, function (result) {
            console.log(result);
            db.close();
        })
    })
    

    效果展示

    以下是Robo 3T下的效果图

    image

    查询数据

    关键语句

    find(query, projection)
    

    参数说明

    • query:
    • projection: 返回结果,值为0的不反回,值为1的返回,默认返回所有键如:
    {name: 0, _id: 0}  表person有name、age和_id(默认带有)三个属性,此处只返回age属性
    

    代码

    // 查询数据
    // 引入mongodb模块
    var MongoClient = require('mongodb').MongoClient; 
    // 创建要连接的数据库对象
    var DB_CONN_STR = 'mongodb://localhost:27017/index';
    
    var selectData = function (db, callback) {
        var collection = db.collection('person');  // 连接将要操作的表(person为数据库index中的一个表)
        // 查询条件
        var where = {'name': 'Han'}
        // 查询
        collection.find(where, {name: 0, _id: 0}).toArray(function (err, result) {
            if (err) {
                console.log('Error:' + err);
                return
            }
            callback(result);
        });
    }
    MongoClient.connect(DB_CONN_STR, function (err, db) {
        console.log('连接成功!');
        selectData(db, function (result) {
            console.log(result);
            db.close();
        })
    })
    

    效果展示

    image

    更新数据

    关键语句

    update(<query>, <update>, {  
        upsert: <boolean>,  
        multi: <boolean>,  
        writeConcern: <document>  
    })
    

    参数说明

    • query: 更新数据的条件
    • update: 更新的数据、对象
    • upsert: (可选)若update对象不存在,是否允许插入,默认false
    • multi: (可选)是否允许更新由query查询出的所有记录,默认false(只更新第一条记录)
    • writeConcern: (可选)抛出异常的级别

    代码

    // 更新数据
    // 引入mongodb模块
    var MongoClient = require('mongodb').MongoClient; 
    // 创建要连接的数据库对象
    var DB_CONN_STR = 'mongodb://localhost:27017/index';
    
    var updateData = function (db, callback) {
        var collection = db.collection('person');  // 连接将要操作的表(person为数据库index中的一个表)
        // 更新条件
        var where = {'name': 'Han'};
        // 更新数据
        var updateData = {$set: {"age" : 222}};
        collection.update(where, updateData, function (err, result) {
            if (err) {
                console.log('Error:' + err);
                return
            }
            callback(result);
        });
    }
    MongoClient.connect(DB_CONN_STR, function (err, db) {
        console.log('连接成功!');
        updateData(db, function (result) {
            console.log(result);
            db.close();
        })
    })
    
    image

    删除数据

    关键语句

    remove(<query>, <justOne>)
    

    若MongoDB的版本是2.6以后:

    remove(<query>,
       {
         justOne: <boolean>,
         writeConcern: <document>
       }
    )
    

    参数说明

    • query :(可选)删除的文档的条件。
    • justOne : (可选)如果设为 true 或 1,则只删除一个文档。
    • writeConcern :(可选)抛出异常的级别。

    代码

    // 删除数据
    // 引入mongodb模块
    var MongoClient = require('mongodb').MongoClient; 
    // 创建要连接的数据库对象
    var DB_CONN_STR = 'mongodb://localhost:27017/index';
    
    var deleteData = function (db, callback) {
        var collection = db.collection('person');  // 连接将要操作的表(person为数据库index中的一个表)
        // 删除条件
        var where = {'name': '小明'};
        // 删除
        collection.remove(where, function (err, result) {
            if (err) {
                console.log('Error:' + err);
                return
            }
            callback(result);
        });
    }
    MongoClient.connect(DB_CONN_STR, function (err, db) {
        console.log('连接成功!');
        deleteData(db, function (result) {
            console.log(result);
            db.close();
        })
    })
    

    效果展示

    原表

    image

    删除后

    image

    相关文章

      网友评论

        本文标题:Node对MongoDB的简单操作

        本文链接:https://www.haomeiwen.com/subject/enlcvxtx.html