- Node & MongoDB 教程
- Node & MongoDB - 首页
- Node & MongoDB - 概览
- Node & MongoDB - 环境设置
- Node & MongoDB 示例
- Node & MongoDB - 连接数据库
- Node & MongoDB - 显示数据库
- Node & MongoDB - 删除数据库
- Node & MongoDB - 创建集合
- Node & MongoDB - 删除集合
- Node & MongoDB - 显示集合
- Node & MongoDB - 插入文档
- Node & MongoDB - 选择文档
- Node & MongoDB - 更新文档
- Node & MongoDB - 删除文档
- Node & MongoDB - 嵌套文档
- Node & MongoDB - 限制记录
- Node & MongoDB - 排序记录
- Node & MongoDB 有用资源
- Node & MongoDB - 快速指南
- Node & MongoDB - 有用资源
- Node & MongoDB - 讨论
Node & MongoDB - 快速指南
Node & MongoDB - 概览
什么是 Node.js?
Node.js 是一个基于 Google Chrome 的 JavaScript 引擎(V8 引擎)构建的服务器端平台。Node.js 由 Ryan Dahl 于 2009 年开发,最新版本为 v0.10.36。根据其官方文档提供的定义,Node.js 是:
Node.js 是一个基于Chrome 的 JavaScript 运行时环境构建的平台,用于轻松构建快速且可扩展的网络应用程序。Node.js 使用事件驱动、非阻塞 I/O 模型,使其轻量级且高效,非常适合跨分布式设备运行的数据密集型实时应用程序。
Node.js 是一个开源的、跨平台的运行时环境,用于开发服务器端和网络应用程序。Node.js 应用程序使用 JavaScript 编写,可以在 OS X、Microsoft Windows 和 Linux 上的 Node.js 运行时环境中运行。
Node.js 还提供了一个丰富的各种 JavaScript 模块库,在很大程度上简化了使用 Node.js 开发 Web 应用程序的过程。
Node.js = Runtime Environment + JavaScript Library
mongodb
mongodb 是 Node.js 驱动程序,用于连接 MongoDB 并对其执行数据库操作。要安装 mongodb,请运行以下 npm 命令。
npm install mongodb + [email protected] added 1 package from 1 contributor in 1.781s
创建/连接到数据库
一旦实例化了 mongoClient,就可以使用其 connect() 方法获取到数据库连接。
// MongoDBClient const client = new MongoClient(url, { useUnifiedTopology: true }); // make a connection to the database client.connect(function(error) { if (error) throw error; console.log("Connected!"); // create or connect to database const db = client.db(database); // close the connection client.close(); });
如果数据库不存在,则上述命令将创建它。
在后续章节中,我们将学习如何使用 Node 对 MongoDB 执行各种操作。
Node & MongoDB - 环境设置
安装 MongoDB 数据库
按照使用MongoDB - 环境提供的 MongoDB 安装步骤进行操作。
安装 Node
在线实时演示选项
您实际上不需要设置自己的环境来开始学习 Node.js。原因很简单,我们已经在网上设置了 Node.js 环境,这样您就可以在线执行所有可用的示例并通过实践学习。随意修改任何示例并使用不同的选项检查结果。
使用下面示例代码框(在我们的网站上)右上角的实时演示选项尝试以下示例:
/* Hello World! program in Node.js */ console.log("Hello World!");
在本教程中给出的大多数示例中,您会找到一个“尝试一下”选项,因此只需使用它并享受您的学习过程。
本地环境设置
如果您仍然希望为 Node.js 设置环境,则需要在您的计算机上安装以下两个软件:(a)文本编辑器和(b)Node.js 二进制安装程序。
文本编辑器
这将用于键入您的程序。一些编辑器的示例包括 Windows 记事本、OS Edit 命令、Brief、Epsilon、EMACS 和 vim 或 vi。
文本编辑器的名称和版本在不同的操作系统上可能有所不同。例如,Notepad 将在 Windows 上使用,而 vim 或 vi 则可以在 Windows 以及 Linux 或 UNIX 上使用。
您使用编辑器创建的文件称为源文件,其中包含程序源代码。Node.js 程序的源文件通常以“.js”扩展名命名。
在开始编程之前,请确保您已准备好一个文本编辑器,并且您有足够的经验来编写计算机程序,将其保存在文件中,最后执行它。
Node.js 运行时环境
在源文件中编写的源代码只是 JavaScript 代码。Node.js 解释器将用于解释和执行您的 JavaScript 代码。
Node.js 发行版作为 SunOS、Linux、Mac OS X 和 Windows 操作系统的二进制安装程序提供,适用于 32 位(386)和 64 位(amd64)x86 处理器架构。
以下部分指导您如何在各种操作系统上安装 Node.js 二进制发行版。
下载 Node.js 归档文件
从Node.js 下载下载最新版本的 Node.js 可安装归档文件。在撰写本教程时,以下版本在不同的操作系统上可用。
操作系统 | 归档文件名称 |
---|---|
Windows | node-v12.16.1-x64.msi |
Linux | node-v12.16.1-linux-x86.tar.gz |
Mac | node-v12.16.1-darwin-x86.tar.gz |
SunOS | node-v12.16.1-sunos-x86.tar.gz |
在 UNIX/Linux/Mac OS X 和 SunOS 上安装
根据您的操作系统架构,下载并将归档文件 node-v12.16.1-osname.tar.gz 解压缩到 /tmp,然后最终将解压缩的文件移动到 /usr/local/nodejs 目录。例如
$ cd /tmp $ wget https://node.org.cn/dist/v12.16.1/node-v12.16.1-linux-x64.tar.gz $ tar xvfz node-v12.16.1-linux-x64.tar.gz $ mkdir -p /usr/local/nodejs $ mv node-v12.16.1-linux-x64/* /usr/local/nodejs
将 /usr/local/nodejs/bin 添加到 PATH 环境变量。
操作系统 | 输出 |
---|---|
Linux | export PATH=$PATH:/usr/local/nodejs/bin |
Mac | export PATH=$PATH:/usr/local/nodejs/bin |
FreeBSD | export PATH=$PATH:/usr/local/nodejs/bin |
在 Windows 上安装
使用 MSI 文件并按照提示安装 Node.js。默认情况下,安装程序在 C:\Program Files\nodejs 中使用 Node.js 发行版。安装程序应在 Windows 的 PATH 环境变量中设置 C:\Program Files\nodejs\bin 目录。重新启动任何打开的命令提示符以使更改生效。
验证安装:执行文件
在您的计算机(Windows 或 Linux)上创建一个名为main.js的 js 文件,其中包含以下代码。
/* Hello, World! program in node.js */ console.log("Hello, World!")
现在使用 Node.js 解释器执行 main.js 文件以查看结果:
$ node main.js
如果您的安装一切正常,则应产生以下结果:
Hello, World!
mongodb
mongodb 是 Node.js 驱动程序,用于连接 MongoDB 并对其执行数据库操作。要安装 mongodb,请运行以下 npm 命令。
npm install mongodb + [email protected] added 1 package from 1 contributor in 1.781s
Node & MongoDB - 连接数据库
Node mongodb 提供mongoClient对象,该对象用于使用 connect() 方法连接数据库连接。此函数采用多个参数,并提供 db 对象以执行数据库操作。
语法
// MongoDBClient const client = new MongoClient(url, { useUnifiedTopology: true }); // make a connection to the database client.connect();
您可以随时使用另一个连接对象函数close()断开与 MongoDB 数据库的连接。
语法
client.close()
示例
尝试以下示例以连接到 MongoDB 服务器:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected!
Node & MongoDB - 显示数据库
要显示数据库,您可以使用admin.listDatabases()方法获取所有数据库的名称,其中 admin 表示 admin 类。
MongoClient.connect(url, function(error, client) { // Use the admin database for the operation const adminDb = client.db('myDb').admin(); // List all the available databases adminDb.listDatabases(function(err, dbs) { console.log(dbs); }); });
示例
尝试以下示例以连接到 MongoDB 服务器:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Use the admin database for the operation const adminDb = client.db('myDb').admin(); // List all the available databases adminDb.listDatabases(function(err, dbs) { console.log(dbs); }); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected! { databases: [ { name: 'admin', sizeOnDisk: 40960, empty: false }, { name: 'config', sizeOnDisk: 36864, empty: false }, { name: 'local', sizeOnDisk: 73728, empty: false } ], totalSize: 151552, ok: 1 }
Node & MongoDB - 删除数据库
要删除数据库,您可以使用database.drop()方法删除选定的数据库。
MongoClient.connect(url, function(error, client) { // Connect to the database const database = client.db('myDb'); // Drop the database database.dropDatabase(); });
示例
尝试以下示例以删除 mongodb 数据库:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Connect to the database const database = client.db('myDb'); // Drop the database database.dropDatabase(); console.log("Database dropped!"); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected! Database dropped!
Node & MongoDB - 创建集合
要创建集合,您可以使用database.createCollection()方法创建集合。
MongoClient.connect(url, function(error, client) { // Connect to the database const database = client.db('myDb'); // Create the collection database.createCollection('sampleCollection'); });
示例
尝试以下示例以创建 mongodb 集合:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Connect to the database const database = client.db('myDb'); // Create the collection database.createCollection('sampleCollection'); console.log("Collection created."); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected! Collection created.
Node & MongoDB - 删除集合
要删除集合,您可以使用collection.drop()方法删除集合。
MongoClient.connect(url, function(error, client) { // Connect to the database const database = client.db('myDb'); // drop the collection database.collection('sampleCollection').drop(function(error, status) { if (error) throw error; if (status) { console.log("Collection deleted"); } }); });
示例
尝试以下示例以删除 mongodb 集合:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Connect to the database const database = client.db('myDb'); // Create the collection database.collection('sampleCollection').drop(function(error, status) { if (error) throw error; if (status) { console.log("Collection deleted."); } }); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected! Collection deleted.
Node & MongoDB - 显示集合
要显示数据库的集合,您可以使用database.listCollections()方法获取集合列表。
MongoClient.connect(url, function(error, client) { // Connect to the database const database = client.db('myDb'); // get the list of collections database.listCollections().toArray(function(err, collections) { collections.forEach(collection => console.log(collection.name)); }); });
示例
尝试以下示例以创建 mongodb 集合:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Connect to the database const database = client.db('myDb'); // Create the collection database.createCollection('sampleCollection'); database.listCollections().toArray(function(err, collections) { collections.forEach(collection => console.log(collection.name)); }); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected! sampleCollection
Node & MongoDB - 插入文档
要将文档插入数据库的集合中,您可以使用collection.insertOne()或collection.insertMany()方法插入一个或多个文档。
database.collection("sampleCollection").insertOne(firstDocument, function(error, res) { if (error) throw error; console.log("1 document inserted"); }); database.collection("sampleCollection").insertMany(documents, function(error, res) { if (error) throw error; console.log("Documents inserted: " + res.insertedCount); });
示例
尝试以下示例以将文档插入 mongodb 集合中:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; const firstDocument = { First_Name : 'Mahesh', Last_Name : 'Parashar', Date_Of_Birth: '1990-08-21', e_mail: '[email protected]', phone: '9034343345' }; const documents = [{ First_Name : 'Radhika', Last_Name : 'Sharma', Date_Of_Birth: '1995-09-26', e_mail: '[email protected]', phone: '9000012345' }, { First_Name : 'Rachel', Last_Name : 'Christopher', Date_Of_Birth: '1990-02-16', e_mail: '[email protected]', phone: '9000054321' }, { First_Name : 'Fathima', Last_Name : 'Sheik', Date_Of_Birth: '1990-02-16', e_mail: '[email protected]', phone: '9000012345' } ]; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Connect to the database const database = client.db('myDb'); database.collection("sampleCollection").insertOne(firstDocument, function(error, res) { if (error) throw error; console.log("1 document inserted"); }); database.collection("sampleCollection").insertMany(documents, function(error, res) { if (error) throw error; console.log("Documents inserted: " + res.insertedCount); }); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Documents inserted: 3 1 document inserted
Node & MongoDB - 选择文档
要选择集合的文档,您可以使用collection.findOne()或collection.find()方法选择一个或多个文档。
database.collection("sampleCollection").findOne({}, function(error, result) { if (error) throw error; console.log(result); }); database.collection("sampleCollection").find({}).toArray(function(error, result) { if (error) throw error; console.log(result); });
示例
尝试以下示例以选择 mongodb 集合中的文档:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Connect to the database const database = client.db('myDb'); database.collection("sampleCollection").findOne({}, function(error, result) { if (error) throw error; console.log(result); }); database.collection("sampleCollection").find({}).toArray(function(error, result) { if (error) throw error; console.log(result); }); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected! { _id: 60c4bbb40f8c3920a0e30fdd, First_Name: 'Radhika', Last_Name: 'Sharma', Date_Of_Birth: '1995-09-26', e_mail: '[email protected]', phone: '9000012345' } [ { _id: 60c4bbb40f8c3920a0e30fdd, First_Name: 'Radhika', Last_Name: 'Sharma', Date_Of_Birth: '1995-09-26', e_mail: '[email protected]', phone: '9000012345' }, { _id: 60c4bbb40f8c3920a0e30fde, First_Name: 'Rachel', Last_Name: 'Christopher', Date_Of_Birth: '1990-02-16', e_mail: '[email protected]', phone: '9000054321' }, { _id: 60c4bbb40f8c3920a0e30fdf, First_Name: 'Fathima', Last_Name: 'Sheik', Date_Of_Birth: '1990-02-16', e_mail: '[email protected]', phone: '9000012345' }, { _id: 60c4bbb40f8c3920a0e30fdc, First_Name: 'Mahesh', Last_Name: 'Parashar', Date_Of_Birth: '1990-08-21', e_mail: '[email protected]', phone: '9034343345' } ]
Node & MongoDB - 更新文档
要更新集合的文档,您可以使用collection.updateOne()或collection.updateMany()方法更新一个或多个文档。
database.collection("sampleCollection").updateOne(query,updates, function(error, result) { if (error) throw error; console.log('Document Updated'); }); database.collection("sampleCollection").updateMany(query,updates, function(error, result) { if (error) throw error; console.log(result.result.nModified + " document(s) updated"); });
示例
尝试以下示例以更新 mongodb 集合中的文档:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Connect to the database const database = client.db('myDb'); database.collection("sampleCollection").updateOne({First_Name:'Mahesh'}, { $set: { e_mail: '[email protected]' } }, function(error, result) { if (error) throw error; console.log('Document Updated.'); }); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected! Document Updated.
Node & MongoDB - 删除文档
要删除集合的文档,您可以使用collection.deleteOne()或collection.deleteMany()方法删除一个或多个文档。
database.collection("sampleCollection").deleteOne(query, function(error, result) { if (error) throw error; console.log('Document deleted.'); }); database.collection("sampleCollection").deleteMany(query, function(error, result) { if (error) throw error; console.log(result.result.n + " document(s) deleted."); });
示例
尝试以下示例以删除 mongodb 集合中的文档:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Connect to the database const database = client.db('myDb'); database.collection("sampleCollection").deleteOne({First_Name:'Mahesh'}, function(error, result) { if (error) throw error; console.log('Document Deleted.'); }); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected! Document Deleted.
Node & MongoDB - 嵌套文档
要将嵌套文档插入数据库的集合中,您可以使用collection.insertOne()或collection.insertMany()方法插入一个或多个文档。
database.collection("sampleCollection").insertOne(firstDocument, function(error, res) { if (error) throw error; console.log("1 document inserted"); }); database.collection("sampleCollection").insertMany(documents, function(error, res) { if (error) throw error; console.log("Documents inserted: " + res.insertedCount); });
示例
尝试以下示例以将文档插入 mongodb 集合中:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; const firstPost = { title : 'MongoDB Overview', description : 'MongoDB is no SQL database', by: 'tutorials point', url: 'https://tutorialspoint.com', comments: [{ user: 'user1', message: 'My First Comment', dateCreated: '20/2/2020', like: 0 }, { user: 'user2', message: 'My Second Comment', dateCreated: '20/2/2020', like: 0 }] }; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Connect to the database const database = client.db('posts'); database.collection("samplePost").insertOne(firstPost, function(error, res) { if (error) throw error; console.log("1 document inserted"); }); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected. 1 document inserted
Node & MongoDB - 限制记录
要限制所选集合的文档,您可以使用collection.find().limit()方法选择所需的文档。
database.collection("sampleCollection").find({}).limit(2).toArray(function(error, result) { if (error) throw error; console.log(result); });
示例
尝试以下示例以选择 mongodb 集合中的有限文档:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Connect to the database const database = client.db('myDb'); database.collection("sampleCollection").find({}).limit(2).toArray(function(error, result) { if (error) throw error; console.log(result); }); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected! [ { _id: 60c4bbb40f8c3920a0e30fdd, First_Name: 'Radhika', Last_Name: 'Sharma', Date_Of_Birth: '1995-09-26', e_mail: '[email protected]', phone: '9000012345' }, { _id: 60c4bbb40f8c3920a0e30fde, First_Name: 'Rachel', Last_Name: 'Christopher', Date_Of_Birth: '1990-02-16', e_mail: '[email protected]', phone: '9000054321' } ]
Node & MongoDB - 排序记录
要对所选集合的文档进行排序,您可以使用collection.find().sort()方法对文档进行排序。
database.collection("sampleCollection").find({}).sort({First_Name: -1}).toArray(function(error, result) { if (error) throw error; console.log(result); });
示例
尝试以下示例以选择 mongodb 集合中的有限文档:
复制并粘贴以下示例作为 mongodb_example.js:
const MongoClient = require('mongodb').MongoClient; // Prepare URL const url = "mongodb://127.0.0.1:27017/"; // make a connection to the database MongoClient.connect(url, function(error, client) { if (error) throw error; console.log("Connected!"); // Connect to the database const database = client.db('myDb'); database.collection("sampleCollection").find({}).sort({First_Name: -1}).toArray(function(error, result) { if (error) throw error; console.log(result); }); // close the connection client.close(); });
输出
使用 node 执行 mysql_example.js 脚本并验证输出。
node mongodb_example.js Connected! [ { _id: 60c4bbb40f8c3920a0e30fdd, First_Name: 'Radhika', Last_Name: 'Sharma', Date_Of_Birth: '1995-09-26', e_mail: '[email protected]', phone: '9000012345' }, { _id: 60c4bbb40f8c3920a0e30fde, First_Name: 'Rachel', Last_Name: 'Christopher', Date_Of_Birth: '1990-02-16', e_mail: '[email protected]', phone: '9000054321' }, { _id: 60c4bbb40f8c3920a0e30fdf, First_Name: 'Fathima', Last_Name: 'Sheik', Date_Of_Birth: '1990-02-16', e_mail: '[email protected]', phone: '9000012345' } ]