nodejs开发——mongodb数据库入门

版权声明:本文为博主原创文章,欢迎分享到其它技术社区,分享请标明出处: https://blog.csdn.net/CHENYUFENG1991/article/details/54835771

       当你还在为开发Nodejs使用哪种数据库而犹豫时,那就选择mongodb吧。在nodejs中操作mongodb非常方便,mongodb天然的支持JSON,增删改查都非常简单。本篇博客主要来实现在nodejs中使用mongodb。

  • 安装mongodb
      在Mac上安装mongodb非常方便,只要使用命令“brew install mongodb”即可。安装完成后,在终端中输入“mongo”出现如下界面表示安装成功:


  • 安装robomongo
      robomongo类似于MySQLWorkBench,可以可视化查看操作数据库,是一个必备的工具。官方下载地址:https://robomongo.org/download   。安装完成后的图标如下:


打开robomongo,需要创建一个连接,如下图所示,点击Create创建:


直接在下面的对话框中输入连接名称Name即可完成:



mongodb数据库中默认有admin和local两个系统自带的数据库,我们一般不使用:



  • 载入mongoose
     nodejs中如何来连接mongodb呢?答案就是使用这个mongoose第三方库,mongoose是目前nodejs下使用最广泛的mongodb库了。进入nodejs项目目录,执行“npm install mongoose --save”即可完成在项目中的载入与配置。



  • 插入数据
     创建一个model.js文件,实现代码如下。主要是做连接数据库的操作,以及声明数据库的名称,Schema可以理解为表中的字段,同时创建一张Student表,目前表中有name和score两个字段。
//引入mongoose第三方库
var mongoose = require('mongoose');
//Test为数据库名
var uri = "mongodb://localhost/Test";
mongoose.connect(uri);

//可以把Schema理解为表中对象的结构
var StudentSchema = new mongoose.Schema({
    name: String,
    score: String
});

//Student可以理解为表名
mongoose.model('Student', StudentSchema);

     再创建一个insert.js文件,实现代码如下:
var mongoose = require('mongoose');
var model = require('./model');

var Student = mongoose.model('Student');

var student = new Student({
    name: "Jack",
    score: 99
});

student.save(function (error, result) {
    if (!error) {
        console.log("Insert Success");
    }
    else {
        console.log("Insert Failed");
    }
});

执行以上插入一条数据的脚本后,数据库就会成功创建Student表,表中已经有一条name=Jack,score=99的记录,只有执行完save()后,数据才会被成功插入,其中包含了回调函数,给出成功或者失败的提示。一般建议,对所有的save()都需要判断成功与否。如下图所示:




  • 查找表中的所有记录
     mongodb可以同时查找出一张表中的所有记录。假设现在Student表中的记录如下:



使用如下代码即可查找出Student中的所有记录:
var mongoose = require('mongoose');

var model = require('./model');

var Student = mongoose.model('Student');

//如果不设置条件,则会把所有记录都输出;如果设置条件,则会把符合条件的记录都输出
Student.find({}, function (error, result) {
    if (!error) {
        console.log(result);
    }
    else {
        console.log(error.toString());
    }
});
代码中的find即为mongodb的查找函数,如果没有设置条件,则为查找全部。同时里面也包含了查找成功与失败的回调。在控制台中的打印结果如下:




  • 查找某一条记录
     上面的例子是查找一张表中的所有记录。同样我们也可以使用某个条件查找某一条记录,现在Student表中同样有Jack,Mary,Lucy三个人,实现代码如下:
var mongoose = require('mongoose');
var model = require('./model');

var Student = mongoose.model('Student');

//如果不设置条件,则返回第一条数据;如果设置条件,则返回满足条件的第一条数据
Student.findOne({name: "Lucy"}, function (error, result) {
    if (!error) {
        console.log(result);
    }
    else {
        console.log(error.toString());
    }
});
查找某一条记录的函数改为了findOne,里面可以加上查找的条件。如果没有查找的条件,则默认的是表中的第一条数据;如果有多条数据符合查找条件,则也只选取其中的第一条作为结果。在控制台中打印的结果如下:

成功查找到了name=Lucy这一条记录。

  • 修改某一条记录
      修改某一条记录的方法也是建立在查找一条记录上的。思想是先查找该条记录,然后修改其中的值,最后再保存进去即可。比如下面的代码我们把Lucy的分数改为100分。

var mongoose = require('mongoose');
var model = require('./model');

var Student = mongoose.model('Student');

//如果不设置条件,则返回第一条数据;如果设置条件,则返回满足条件的第一条数据
Student.findOne({name: "Lucy"}, function (error, result) {
    if (!error) {

        //可以直接对返回的数据操作
        result.score = 100;
        result.save();

        console.log(result);
    }
    else {
        console.log(error.toString());
    }
});

我们可以直接对查找到的数据修改里面的字段,修改完成后,再使用save()进行保存即可。其实最准确的做法是save()中也有回调函数,应该对这个回调函数进行判断是否修改成功与否。我上面的代码没有加,大家可以自己尝试自己写一下。执行以上脚本后,robomongo中的结果如下,Lucy的分数已经成功被修改了: