使用node连接并操作MongoDB数据库 对数据进行 、增、 删、 改、 查

创建一个node项目,并初始化项目文件

	npm init --yes

在项目根目录中创建主文件app.js

使用npm或者cnpm下载mongodb包

$ cnpm install mongodb

创建数据库对象 并连接MongoDB中的数据库

要在 MongoDB 中创建一个数据库,首先我们需要创建一个 MongoClient 对象,然后配置好指定的 URL 和 端口号。

如果数据库不存在,MongoDB 将创建数据库并建立连接。

// 导入MongoDB包模块,并指定导入MongoClient对象
var MongoClient = require('mongodb').MongoClient;

// 指定要连接的数据库url地址,切指定连接的hzh_01这个数据库   如果没有该数据库,就会创建一个
var url = "mongodb://localhost:27017/hzh_01";

// 通过MongoClient对象的静态方法connect连接数据库
/*
    参数一url 指定连接的数据库地址
    参数二 固定格式
    参数三 回调函数   该回调函数会在连接数据库时,自动调用
                回调函数参数一 表示调用时出现的错误,即连接失败返回的错误对象
                回调函数参数二 表示连接成功后得到的数据库对象 现在db就是 hzh_01这个数据库对象
                                可以通过该对象对该数据库进行增删改查的操作
 */
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
  if (err) throw err;
  console.log("数据库已创建!");
  
  // 每次打开数据库,操作完以后都必须通过下面的数据库对象的close()方法,关闭数据库
  db.close();
});

数据库操作( CURD )

与 MySQL 不同的是 MongoDB 会自动创建数据库和集合,所以使用前我们不需要手动去创建。

插入数据

插入单条数据

以下实例我们连接数据库 runoob 的 site 表,并插入一条数据条数据,使用 insertOne():

// 插入数据
// 以下实例我们连接数据库 runoob 的 site 表,并插入一条数据条数据,使用 insertOne():
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    // 可以通过db数据库对象的db方法创建一个runoob数据库对象
    var dbo = db.db("runoob");
    // 定义一个要插入的文档对象,即键值对对象
    var myobj = { name: "小浩同学!", url: "在努力学习呀" };

    // 通过数据库对象的collection方法指定集合名 ,在通过集合对象的insertOne()方法插入一个行文档
    dbo.collection("site").insertOne(myobj, function (err, res) {
        /*
            参数一,就是要插入的文档对象,键值对对象
            参数二,回调函数
                    err 错误对象
		           res 就是插入的对象信息
         */
        if (err) throw err;
        console.log("文档插入成功");
        // 关闭当前打开的数据库对象
        db.close();
    });
});
如果要插入多条数据可以使用 insertMany():
// 插入多条数据  通过insertMany()方法,传递一个对象数组

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;

    // 通过db数据库对象的db()方法该方法可以进入runoob数据库,没有该数据库会自动创建
    var dbo = db.db("runoob");

    // 要插入的数据,多条文档对象,要放入数组中
    var myobj =  [
        { name: '菜鸟工具', url: 'https://c.runoob.com', type: 'cn'},
        { name: 'Google', url: 'https://www.google.com', type: 'en'},
        { name: 'Facebook', url: 'https://www.google.com', type: 'en'}
       ];
    dbo.collection("site").insertMany(myobj, function(err, res) {
        if (err) throw err;
        console.log("插入的文档数量为: " + res.insertedCount); //res.insertedCount 为插入的条数。
        console.log(res);

        // 关闭本次打开的数据库
        db.close();
    });
});

查询数据

可以使用 find() 来查找数据, find() 可以返回匹配条件的所有数据。 如果未指定条件,find() 返回集合中的所有数据。

// 可以使用 find() 来查找数据, find() 可以返回匹配条件的所有数据。 如果未指定条件,find() 返回集合中的所有数据。
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;

    // 获取数据库对象
    var dbo = db.db("hzh_01");
    // 调用集合的find()方法获取该集合的所有文档对象,再过toArray()方法将该文档对象转换为一个数组,每一个文档就是该数组的每个元素
    /*
        toArray()方法,需要传入一个回调函数,可以在回调函数中获取你要的数据
                回调函数
                    参数 err  错误对象,获取失败返回的对象  默认为null
                    参数 result  获取到的那个对象,即将所有文档转换成功的那个对象数组
     */
    dbo.collection("jiheName").find({}).toArray(function(err, result) { // 返回集合中所有数据
        if (err) throw err;
        console.log(result);

        // 关闭本次打开的数据库
        db.close();
    });
});

查询指定条件的数据

以下实例检索 name 为 “小浩同学!” 的实例:

	查询条件  即字段名name为 小浩同学!的那条文档,即那行数据
// 以下实例检索 name 为 "小浩同学!" 的实例:
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var whereStr = { "name": '小浩同学!' };  // 查询条件  即字段名为菜鸟教程的那条文档,即那行数据
    //可以理解 find()方法可以传递一个参数,是个对象类型,健名即字段名  即列名  值该行在该列的数据
    dbo.collection("site").find(whereStr).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
    });
});

更新数据

更新一条数据

我们也可以对数据库的数据进行修改,以下实例将 name 为 “小浩同学!” 的 url 改为 每天都要努力学习哦

// 更新数据
// 我们也可以对数据库的数据进行修改,以下实例将 name 为 "小浩同学!" 的 url 改为 每天都要努力学习哦
// 更新一条数据
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    // 查询条件  查询要修改的那条数据
    var whereStr = {"name":'小浩同学!'};  
    // 将查询到的那行字段中的url列的值 修改为  ---每天都要努力学习哦   健名固定格式
    var updateStr = {$set: { "url" : "每天都要努力学习哦" }};  
    dbo.collection("site").updateOne(whereStr, updateStr, function(err, res) {
        if (err) throw err;
        console.log("文档更新成功");
        db.close();
    });
});
更新多条数据

如果要更新所有符合条的文档数据可以使用 updateMany():

// 如果要更新所有符合条的文档数据可以使用 updateMany():

// 更新多条数据

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var whereStr = {"type":'en'};  // 查询条件
    var updateStr = {$set: { "url" : "我们都要一起努力学习哦" }};
    dbo.collection("site").updateMany(whereStr, updateStr, function(err, res) {
        if (err) throw err;
         console.log(res.result.nModified + " 条文档被更新"); //result.nModified 为更新的条数。
        db.close();
    });
});

删除数据

删除一条数据

以下实例将 name 为 “小三” 的数据删除 :

// 删除一条数据
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var whereStr = {"name":'小三'};  // 查询条件 查询要删除的那条数据
    dbo.collection("site").deleteOne(whereStr, function(err, obj) {
        if (err) throw err;
        console.log("文档删除成功");
        db.close();
    });
});
删除多条数据

如果要删除多条语句可以使用 deleteMany() 方法

以下实例将 type 为 en 的所有数据删除 :

// 删除多条数据
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/";
 
MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
    if (err) throw err;
    var dbo = db.db("runoob");
    var whereStr = { type: "en" };  // 查询条件
    dbo.collection("site").deleteMany(whereStr, function(err, obj) {
        if (err) throw err;
        console.log(obj.result.n + " 条文档被删除");  //obj.result.n 删除的条数。
        db.close();
    });
});

用异步函数实现相同的数据操作 推荐使用,更加方便

实例

const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://localhost/";
 
 // 因为await需要在异步函数中使用,所以需要先定义一个异步函数
async function dataOperate() {
	// 定义一个全局的对象,用来存放本次连接的数据库对象
    var conn = null;
    try {
        conn = await MongoClient.connect(url);
        console.log("数据库已连接");
        const test = conn.db("testdb").collection("test");
        // 增加
        await test.insertOne({ "site": "runoob.com" });
        // 查询
        var arr = await test.find().toArray();
        console.log(arr);
        // 更改
        await test.updateMany({ "site": "runoob.com" },
            { $set: { "site": "example.com" } });
        // 查询
        arr = await test.find().toArray();
        console.log(arr);
        // 删除
        await test.deleteMany({ "site": "example.com" });
        // 查询
        arr = await test.find().toArray();
        console.log(arr);
    } catch (err) {
        console.log("错误:" + err.message);
    } finally {
    	// 关闭打开的数据库,该语句块,无论什么情况都会被执行
        if (conn != null) conn.close();
    }
}
 
 // 调用该异步函数
dataOperate();

更具体 可以去菜鸟教程官网更详细

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小艾同学呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值