聚合教程
概述
聚合教程以分步骤的形式详细解释了常见的聚合任务。这些教程改编自 Paul Done 的《实用 MongoDB 聚合》一书中的示例。
每个教程都包含以下部分
简介,该部分描述了聚合类型的目的和常见用例。本节还描述了教程演示的示例和预期结果。
开始之前,该部分描述了在构建聚合管道和执行聚合之前必须拥有的数据库、集合和样本数据。
教程,该部分描述了如何构建和运行聚合管道。本节描述了完成聚合教程的每个阶段,然后解释了如何运行和解释聚合的输出。
在每个聚合教程的末尾,您可以找到链接到一个可运行的 Node.js 代码文件,您可以在您的环境中运行它。
提示
要了解更多关于执行聚合的信息,请参阅聚合指南。
聚合模板应用
在开始跟随聚合教程之前,您必须设置一个新的Node.js应用。您可以使用此应用连接到MongoDB部署,将示例数据插入MongoDB,并在每个教程中运行聚合管道。
提示
要了解如何安装驱动程序并连接到MongoDB,请参阅快速入门指南中的下载和安装以及创建MongoDB部署步骤。
一旦安装了驱动程序,创建一个名为agg_tutorial.js
的文件。将以下代码粘贴到该文件中,以创建聚合教程的应用模板
const { MongoClient } = require("mongodb"); // Replace the placeholder with your connection string. const uri = "<connection string>"; const client = new MongoClient(uri); async function run() { try { const aggDB = client.db("agg_tutorials_db"); // Get a reference to relevant collections. // ... const someColl = // ... const anotherColl = // Delete any existing documents in collections. // ... await someColl.deleteMany({}); // Insert sample data into the collection or collections. // ... const someData = [ ... ]; // ... await someColl.insertMany(someData); // Create an empty pipeline array. const pipeline = []; // Add code to create pipeline stages. // ... pipeline.push({ ... }) // Run the aggregation. // ... const aggregationResult = ... // Print the aggregation results. for await (const document of aggregationResult) { console.log(document); } } finally { await client.close(); } } run().catch(console.dir);
重要
在前面代码中,阅读代码注释以找到您必须修改的代码部分,以便遵循您正在学习的教程。
如果您尝试在不进行任何更改的情况下运行代码,您将遇到连接错误。
对于每个教程,您必须用您的部署的连接字符串替换连接字符串占位符。
提示
要了解如何定位您的部署的连接字符串,请参阅快速入门指南中的创建连接字符串步骤。
例如,如果您的连接字符串是"mongodb+srv://mongodb-example:27017"
,您的连接字符串赋值类似于以下
const uri = "mongodb+srv://mongodb-example:27017";
在修改教程模板后,运行以下命令以运行完成的文件
node agg_tutorial.js