使用 VS Code 运行聚合管道
您可以在聚合管道 上运行您的集合中的VS Code 扩展。聚合管道由处理您的数据并返回计算结果的 阶段 组成。
聚合的常见用途包括
按给定表达式分组数据。
基于多个字段计算结果并将这些结果存储在新字段中。
过滤数据以返回匹配给定条件的子集。
排序数据。
当您运行聚合时VS Code 扩展方便地将结果直接输出到 Visual Studio Code。
打开游乐场以运行聚合管道
您可以在MongoDB游乐场中运行聚合管道。MongoDB游乐场是JavaScript环境,您可以在此环境中原型化查询、聚合和MongoDB命令,并具有有帮助的语法高亮显示。
要打开新的MongoDB游乐场
查找并运行“创建MongoDB游乐场”命令。
使用命令面板搜索栏搜索命令。所有与VS Code 扩展相关的命令都以MongoDB:开头。
运行MongoDB: 创建MongoDB游乐场命令时,VS Code 扩展将打开一个预配置了几个命令的默认游乐场模板。
注意
要加载没有模板的新游乐场,请禁用为游乐场使用默认模板设置。有关更多信息,请参阅VS Code 扩展设置,请参阅Visual Studio Code设置.
创建并运行聚合管道
要创建一个聚合管道,请在您的Playground中使用以下语法
db.<collection>.aggregate([ { <$stage1> }, { <$stage2> } ... ])
要运行您的Playground,请按Playground视图右上角的播放按钮。VS Code 扩展将Playground分割并输出结果到Playground Results.json面板。如果您禁用了分割视图,VS Code 扩展则在新的标签页中输出结果。
示例
要运行此示例,请从空白MongoDB Playground开始,如果已加载模板Playground,请清除它。
考虑以下Playground,它将示例数据插入到集合中并聚合这些数据
use("test"); db.sales.insertMany([ { "_id" : 1, "item" : "abc", "price" : 10, "quantity" : 2, "date" : new Date("2014-03-01T08:00:00Z") }, { "_id" : 2, "item" : "jkl", "price" : 20, "quantity" : 1, "date" : new Date("2014-03-01T09:00:00Z") }, { "_id" : 3, "item" : "xyz", "price" : 5, "quantity" : 10, "date" : new Date("2014-03-15T09:00:00Z") }, { "_id" : 4, "item" : "xyz", "price" : 5, "quantity" : 20, "date" : new Date("2014-04-04T11:21:39.736Z") }, { "_id" : 5, "item" : "abc", "price" : 10, "quantity" : 10, "date" : new Date("2014-04-04T21:23:13.331Z") }, { "_id" : 6, "item" : "def", "price" : 7.5, "quantity": 5, "date" : new Date("2015-06-04T05:08:13Z") }, { "_id" : 7, "item" : "def", "price" : 7.5, "quantity": 10, "date" : new Date("2015-09-10T08:43:00Z") }, { "_id" : 8, "item" : "abc", "price" : 10, "quantity" : 5, "date" : new Date("2016-02-06T20:20:13Z") } ]) db.sales.aggregate([ { $match: { date: { $gte: new Date("2014-01-01"), $lt: new Date("2015-01-01") } } }, { $group: { _id: "$item", totalSaleAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } } } } ])
此管道
切换到
test
数据库。将八个文档插入到
test.sales
集合中。进行两阶段的聚合
当您按下播放按钮时,VS Code 扩展将您的playground分割并输出以下文档到Playground Results.json面板。如果您禁用了分割视图,VS Code 扩展则在新的标签页中输出以下文档
[ { _id: 'abc', totalSaleAmount: 120 }, { _id: 'jkl', totalSaleAmount: 20 }, { _id: 'xyz', totalSaleAmount: 150 } ]