如何确认mongodb数据插入是否成功_Node.JS实战47:MongoDB!?大型项目数据库首选...

MongoDB是种NoSQL概念数据库(Not only sql)数据库。

MongoDB是基于分布式文件存储的数据库。

简单一句话概括:很强大!性能比MySQL强大、功能更简单、更易用。做大型项目,有很多数据存储的话用它就对了!

92a478f3bc1f1a8cb1093247f3cc1e32.png

1、安装

MongoDB是分布式的,建议使用时独立安装在一台服务器、与功能程序分离。

那么,本文示例,一台运行Node程序,另一台装MongoDB。

Win系统下载安装。

下载时选择系统和版本:

74a7dcd4b630d72f3d474f4f80f13f1a.png

然后是一路Next安装:

f591f02eae53fecdeb85cc1a39d247c0.png
c7ea06a507f70796bebc7fdd2f6b2a98.png

4.2.2版本,安装后直接就可以用了,不像旧版需要配置数据库和日志地址、还需要手动启动服务。

2、使用

在另一台机器,开始编写例程。

首先安装Node的MongoDB客户端模块:

npm i mongodb

代码1、连接数据:

var MongoClient = require('mongodb').MongoClient;var url = "mongodb://192.168.31.18:27017/jshaman"; MongoClient.connect(url, { useNewUrlParser: true ,useUnifiedTopology: true}, function(err, db) {  if (err) {    console.log(err.message);  }else{    console.log("Database ready!");    db.close();  }  });

本例中,192.168.31.18是另一台MongoDB的地址。

执行:

e16abdd4fc39eea33c1ec6a442b302c8.png

未连接成功,超时了。

有两种原因:另一台机器上的防火墙阻止了连接,或MongoDB的默认配置不允许远程连接。

回到MongoDB安装机器,做如下修改:

关闭防火墙:

e7dad35744b0605e90406b5ae74e4bc3.png

修改MongoDB配置文件:

c7451d78ff473b407aa899358b3d1591.png

并重启MongoDB服务(不重启的话修改配置不会生效):

e8de723e3d3a0a4a55d2611a18e2d2cd.png

再次执行刚才的代码:

71bcc47ea3734a91e8572169b92b99d8.png

连接、创建数据库已成功。

接下来进行数据库操作。

插入数据:

var MongoClient = require('mongodb').MongoClient;var url = "mongodb://192.168.31.18:27017/"; MongoClient.connect(url, { useNewUrlParser: true ,useUnifiedTopology: true}, function(err, db) {  if (err) {    console.log(err.message);  }else{    var dbo = db.db("jshaman");    var myobj = { name: "web", url: "www.jshaman.com" };        dbo.collection("mywebs").insertOne(myobj, function(err, res) {        if (err) throw err;        console.log("insert success.");        db.close();    });  }  });
b4cf1d328440f6384ba7ef29218f8ea0.png

执行,插入数据成功:

fc32976f205d15dc0a43c03a664ca3b6.png

到MongoDB机器,用Mongo命令查看一下刚才插入的数据:

498ed53818f7c0b11ac96e4d08520ca4.png
show dbs:查看所有的数据库;use jshaman:切换到jshaman库;show tables:查看所有的表;db.mywebs.find():查询所有数据。

上面是插入一条数据,也可以一次插入多条数据:

var MongoClient = require('mongodb').MongoClient;var url = "mongodb://192.168.31.18:27017/"; MongoClient.connect(url, { useNewUrlParser: true ,useUnifiedTopology: true}, function(err, db) {  if (err) {    console.log(err.message);  }else{    var dbo = db.db("jshaman");    var myobj =  [      { name: 'web1', url: 'http://www.jshaman.com', type: 'cn'},      { name: 'web2', url: 'http://www.sharewaf.com', type: 'en'},      { name: 'web3', url: 'https://www.ty2y.com', type: 'en'}     ];    dbo.collection("site").insertMany(myobj, function(err, res) {        if (err) throw err;        console.log("insert numbers: " + res.insertedCount);        db.close();    });  }  });

res.insertedCount 为插入的条数。

执行:

135abe2c849ff756f536819b0cdf59c1.png

查询数据:

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

var MongoClient = require('mongodb').MongoClient;var url = "mongodb://192.168.31.18:27017/"; MongoClient.connect(url, { useNewUrlParser: true ,useUnifiedTopology: true}, function(err, db) {  if (err) {    console.log(err.message);  }else{    var dbo = db.db("jshaman");        dbo.collection("site"). find({}).toArray(function(err, result) {       if (err) throw err;      console.log(result);      db.close();    });  }  });

执行:

0230b52814ca2efa838f7b0d5899a596.png

修改代码,加入查询条件:

var MongoClient = require('mongodb').MongoClient;var url = "mongodb://192.168.31.18:27017/"; MongoClient.connect(url, { useNewUrlParser: true ,useUnifiedTopology: true}, function(err, db) {  if (err) {    console.log(err.message);  }else{    var dbo = db.db("jshaman");        // 查询条件    var whereStr = {"name":'web1'};      dbo.collection("site").find(whereStr).toArray(function(err, result) {        if (err) throw err;        console.log(result);        db.close();    });  }  });

执行:

4d9bf77bcd4c6c5e68ca52a002761090.png

更新数据:

var MongoClient = require('mongodb').MongoClient;var url = "mongodb://192.168.31.18:27017/"; MongoClient.connect(url, { useNewUrlParser: true ,useUnifiedTopology: true}, function(err, db) {  if (err) {    console.log(err.message);  }else{    var dbo = db.db("jshaman");        // 查询条件    var whereStr = {"name":'web1'};      var updateStr = {$set: { "url" : "http://www.fairysoftware.com" }};    // 将名为web1的url改为http://www.fairysoftware.com    dbo.collection("site").updateOne(whereStr, updateStr, function(err, res) {        if (err) throw err;        console.log("Update success.");        db.close();    });  }  });

但这个方法只会更新一条数据:

bdf6b9a275eeb27742730783a8297828.png

如要更新多条或所有:

var MongoClient = require('mongodb').MongoClient;var url = "mongodb://192.168.31.18:27017/"; MongoClient.connect(url, { useNewUrlParser: true ,useUnifiedTopology: true}, function(err, db) {  if (err) {    console.log(err.message);  }else{    var dbo = db.db("jshaman");        // 查询条件    var whereStr = {"name":'web1'};      var updateStr = {$set: { "url" : "http://www.sharewaf.com" }};    dbo.collection("site").updateMany(whereStr, updateStr, function(err, res) {      if (err) throw err;       console.log(res.result.nModified + " updated!");      db.close();  });  }  });

执行显示:

2bc981ada299291f9e69036aeebdba5c.png

确认:

fc975add092309004b70550a30166715.png

删除数据:

删除某一条数据:

var MongoClient = require('mongodb').MongoClient;var url = "mongodb://192.168.31.18:27017/"; MongoClient.connect(url, { useNewUrlParser: true ,useUnifiedTopology: true}, function(err, db) {  if (err) {    console.log(err.message);  }else{    var dbo = db.db("jshaman");        // 查询条件    var whereStr = {"name":'web1'};     dbo.collection("site").deleteOne(whereStr, function(err, obj) {        if (err) throw err;        console.log("delete success");        db.close();    });  }  });

删除多条数据:

var MongoClient = require('mongodb').MongoClient;var url = "mongodb://192.168.31.18:27017/"; MongoClient.connect(url, { useNewUrlParser: true ,useUnifiedTopology: true}, function(err, db) {  if (err) {    console.log(err.message);  }else{    var dbo = db.db("jshaman");        // 查询条件    var whereStr = {"name":'web1'};     dbo.collection("site").deleteMany(whereStr, function(err, obj) {      if (err) throw err;      console.log(obj.result.n + " delete success!");      db.close();    });  }  });

执行:

a2cb720fa704f942cb47bbc9d11f32ed.png

更多功能:

排序:

使用 sort() 方法,该方法接受一个参数,规定是升序(1)还是降序(-1)。

代码片段:

dbo.collection("site").find().sort(mysort).toArray(function(err, result) {  if (err) throw err;  console.log(result);  db.close();});

分页查询:

limit():读取两条数据:

    dbo.collection("site").find().limit(2).toArray(function(err, result) {        if (err) throw err;        console.log(result);        db.close();  });

skip(): 跳过前面两条数据,读取两条数据:

    dbo.collection("site").find().skip(2).limit(2).toArray(function(err, result) {        if (err) throw err;        console.log(result);        db.close();  });

MongoDB的常用操作基本就是这些了,感觉怎么样,是不是强大、简单又好用呢?

更多本系列文章:

Node.JS实战46:断言,调试和测试必备

Node.JS实战45:获取磁盘空间信息

Node.JS实战44:非常好用的数据库:SQLite

Node.JS实战43:Prune,给项目瘦个身

Node.JS实战42:又一高端操作:API HOOK

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值