NodeJs-连接MongoDB

MongoDB是一种文档导向数据库管理系统,由C++撰写而成。 本章节我们将为大家介绍如何使用 Node.js 来连接 MongoDB,并对数据库进行操作。

安装驱动

本教程使用了淘宝定制的 cnpm 命令进行安装:

1
$ cnpm install mongodb

接下来我们来实现增删改查功能。

创建数据库

要在 MongoDB 中创建一个数据库,首先我们需要创建一个 MongoClient 对象,然后配置好指定的 URL 和 端口号。 如果数据库不存在,MongoDB 将创建数据库并建立连接。

创建连接

1
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/abc"; MongoClient.connect(url, function(err, db) { if (err) throw err; console.log("数据库已创建!"); db.close(); });

创建集合

我们可以使用 createCollection() 方法来创建集合:

创建集合

1
2
3
4
5
6
var MongoClient = require('mongodb').MongoClient; var url = 'mongodb://localhost:27017/abc'; MongoClient.connect(url, function (err, db) { 
if (err) throw err; console.log('数据库已创建');
var dbase = db.db("runoob");
dbase.createCollection('site', function (err, res) {
if (err) throw err; console.log("创建集合!"); db.close();
}); });

数据库操作( CURD )

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

插入数据

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

插入一条数据

1
2
3
4
5
6
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { 
if (err) throw err; var dbo = db.db("abc");
var myobj = { name: "百度", url: "www.baidu.com" };
dbo.collection("site").insertOne(myobj, function(err, res) {
if (err) throw err; console.log("文档插入成功"); db.close();
}); });

执行以下命令输出就结果为:

$ node test.js 文档插入成功

从输出结果来看,数据已插入成功。 我们也可以打开 MongoDB 的客户端查看数据,如:

1
2
3
4
5
6
7
> show dbs
runoob 0.000GB # 自动创建了 runoob 数据库
> show tables
site # 自动创建了 site 集合(数据表)
> db.site.find()
{ "_id" : ObjectId("5a794e36763eb821b24db854"), "name" : "百度", "url" : "www.baidu.com" }
>

如果要插入多条数据可以使用 insertMany():

插入多条数据

1
2
3
4
5
6
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { 
if (err) throw err; var dbo = db.db("abc");
var myobj = [ { name: '百度', url: 'https://www.baidu.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); db.close();
}); });

res.insertedCount 为插入的条数。

查询数据

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

find()

1
2
3
4
5
6
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { 
if (err) throw err;
var dbo = db.db("abc");
dbo.collection("site"). find({}).toArray(function(err, result) {
if (err) throw err;
console.log(result); db.close(); }); });

以下实例检索 name 为 “百度” 的实例:

查询指定条件数据数据

1
2
3
4
5
6
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { 
if (err) throw err; var dbo = db.db("runoob");
var whereStr = {"name":'百度'};
dbo.collection("site").find(whereStr).toArray(function(err, result) {
if (err) throw err; console.log(result); db.close();
}); });

执行以下命令输出就结果为:

1
[ { _id: 5a794e36763eb821b24db854, name: '百度', url: 'www.baidu.com' } ]

更新数据

我们也可以对数据库的数据进行修改,以下实例将 name 为 “百度” 的 url 改为 https://www.baidu.cn:

更新一条数据

1
2
3
4
5
6
7
var MongoClient = require('mongodb').MongoClient; var url = "mongodb://localhost:27017/"; MongoClient.connect(url, function(err, db) { 
if (err) throw err; var dbo = db.db("runoob");
var whereStr = {"name":'百度'};
var updateStr = {$set: { "url" : "https://www.baidu.cn" }};
dbo.collection("site").updateOne(whereStr, updateStr, function(err, res) {
if (err) throw err; console.log("文档更新成功"); db.close();
}); });

执行成功后,进入 mongo 管理工具查看数据已修改:

1
2
3
> db.site.find().pretty()
{ "_id" : ObjectId("5a794e36763eb821b24db854"), "name" : "百度", "url" : "https://www.baidu.cn" // 已修改为 https
}

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

  • 版权声明: 本博客所有文章,未经许可,任何单位及个人不得做营利性使用!转载请标明出处!如有侵权请联系作者。
  • Copyrights © 2015-2020 翟天野

请我喝杯咖啡吧~