- 节点和 MongoDB 教程
- 节点和 MongoDB - 主页
- 节点和 MongoDB - 概述
- Node 和 MongoDB - 环境设置
- 节点和 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 - 记录排序
- 节点和 MongoDB 有用资源
- Node 和 MongoDB - 快速指南
- Node 和 MongoDB - 有用的资源
- Node 和 MongoDB - 讨论
Node 和 MongoDB - 快速指南
节点和 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 是 Node.js 驱动程序,用于在 MongoDB 上连接并执行数据库操作。要安装 mongodb,请运行以下 npm 命令。
npm install mongodb + mongodb@3.6.9 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.js 对 MongoDB 进行各种操作。
Node 和 MongoDB - 环境设置
安装 MongoDB 数据库
使用MongoDB - 环境执行 MongoDB 安装步骤
安装节点
在线现场演示选项
您确实不需要设置自己的环境来开始学习 Node.js。原因很简单,我们已经在线搭建了Node.js环境,这样你就可以在线执行所有可用的示例,边实践边学习。请随意修改任何示例并使用不同选项检查结果。
使用以下示例代码框(在我们的网站上)右上角提供的“实时演示”选项尝试以下示例 -
/* Hello World! program in Node.js */ console.log("Hello World!");
对于本教程中给出的大多数示例,您都会找到“尝试”选项,因此只需使用它并享受学习的乐趣。
本地环境设置
如果您仍然愿意为 Node.js 设置环境,则您的计算机上需要有以下两个软件:(a) 文本编辑器和 (b) Node.js 二进制安装程序。
文本编辑器
这将用于输入您的程序。少数编辑器的示例包括 Windows 记事本、操作系统编辑命令、Brief、Epsilon、EMACS 和 vim 或 vi。
文本编辑器的名称和版本可能因不同操作系统而异。例如,记事本将在 Windows 上使用,vim 或 vi 可以在 Windows 上使用,也可以在 Linux 或 UNIX 上使用。
您使用编辑器创建的文件称为源文件,包含程序源代码。Node.js 程序的源文件通常以扩展名“ .js ”命名。
在开始编程之前,请确保您有一个文本编辑器,并且您有足够的经验来编写计算机程序、将其保存在文件中并最终执行它。
Node.js 运行时
源文件中编写的源代码只是 javascript。Node.js 解释器将用于解释和执行您的 JavaScript 代码。
Node.js 发行版以二进制形式安装,适用于采用 32 位 (386) 和 64 位 (amd64) x86 处理器架构的 SunOS、Linux、Mac OS X 和 Windows 操作系统。
以下部分将指导您如何在各种操作系统上安装 Node.js 二进制发行版。
下载 Node.js 存档
从Node.js 下载下载最新版本的 Node.js 可安装存档文件。在撰写本教程时,以下是不同操作系统上可用的版本。
操作系统 | 档案名称 |
---|---|
Windows | 节点-v12.16.1-x64.msi |
Linux | 节点-v12.16.1-linux-x86.tar.gz |
苹果 | 节点-v12.16.1-darwin-x86.tar.gz |
太阳操作系统 | 节点-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 http://nodejs.org/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 | 导出 PATH=$PATH:/usr/local/nodejs/bin |
苹果 | 导出 PATH=$PATH:/usr/local/nodejs/bin |
自由BSD | 导出 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 是 Node.js 驱动程序,用于在 MongoDB 上连接并执行数据库操作。要安装 mongodb,请运行以下 npm 命令。
npm install mongodb + mongodb@3.6.9 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://localhost: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 代表管理类。
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://localhost: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://localhost: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://localhost: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://localhost: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://localhost: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://localhost:27017/"; const firstDocument = { First_Name : 'Mahesh', Last_Name : 'Parashar', Date_Of_Birth: '1990-08-21', e_mail: 'mahesh_parashar.123@gmail.com', phone: '9034343345' }; const documents = [{ First_Name : 'Radhika', Last_Name : 'Sharma', Date_Of_Birth: '1995-09-26', e_mail: 'radhika_sharma.123@gmail.com', phone: '9000012345' }, { First_Name : 'Rachel', Last_Name : 'Christopher', Date_Of_Birth: '1990-02-16', e_mail: 'rachel_christopher.123@gmail.com', phone: '9000054321' }, { First_Name : 'Fathima', Last_Name : 'Sheik', Date_Of_Birth: '1990-02-16', e_mail: 'fathima_sheik.123@gmail.com', 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://localhost: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: 'radhika_sharma.123@gmail.com', phone: '9000012345' } [ { _id: 60c4bbb40f8c3920a0e30fdd, First_Name: 'Radhika', Last_Name: 'Sharma', Date_Of_Birth: '1995-09-26', e_mail: 'radhika_sharma.123@gmail.com', phone: '9000012345' }, { _id: 60c4bbb40f8c3920a0e30fde, First_Name: 'Rachel', Last_Name: 'Christopher', Date_Of_Birth: '1990-02-16', e_mail: 'rachel_christopher.123@gmail.com', phone: '9000054321' }, { _id: 60c4bbb40f8c3920a0e30fdf, First_Name: 'Fathima', Last_Name: 'Sheik', Date_Of_Birth: '1990-02-16', e_mail: 'fathima_sheik.123@gmail.com', phone: '9000012345' }, { _id: 60c4bbb40f8c3920a0e30fdc, First_Name: 'Mahesh', Last_Name: 'Parashar', Date_Of_Birth: '1990-08-21', e_mail: 'mahesh_parashar.123@gmail.com', 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://localhost: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: 'maheshparashar@gmail.com' } }, 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://localhost: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://localhost:27017/"; const firstPost = { title : 'MongoDB Overview', description : 'MongoDB is no SQL database', by: 'tutorials point', url: 'http://www.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://localhost: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: 'radhika_sharma.123@gmail.com', phone: '9000012345' }, { _id: 60c4bbb40f8c3920a0e30fde, First_Name: 'Rachel', Last_Name: 'Christopher', Date_Of_Birth: '1990-02-16', e_mail: 'rachel_christopher.123@gmail.com', 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://localhost: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: 'radhika_sharma.123@gmail.com', phone: '9000012345' }, { _id: 60c4bbb40f8c3920a0e30fde, First_Name: 'Rachel', Last_Name: 'Christopher', Date_Of_Birth: '1990-02-16', e_mail: 'rachel_christopher.123@gmail.com', phone: '9000054321' }, { _id: 60c4bbb40f8c3920a0e30fdf, First_Name: 'Fathima', Last_Name: 'Sheik', Date_Of_Birth: '1990-02-16', e_mail: 'fathima_sheik.123@gmail.com', phone: '9000012345' } ]