MongoDB Compass 中的聚合方法?

问题描述 投票:0回答:2

如标题所述,我在使用聚合方法从 MongoDB Compass 查询时遇到一些问题。我有一个这种形式的文档集合:

{"Array":[{"field":"val","field2":"val2"},{"field":"val","field2":"val2"},{"field":"val","field2":"val2"},{"field":"val","field2":"val2"},{"field":"val","field2":"val2"},...]}

使用mongo shell或Studio 3T软件我用聚合方法查询它,如下示例:

db.collection.aggregate([
     { $match: {"Array.field": "val"}}, 
     { $unwind: "$Array"},
     { $match: {"Array.field": "val"}},
     { $group: {_id: null, count: {$sum:NumberInt(1)}, Array: {$push: "$Array"}}},
     { $project: {"N. Hits": "$count", Array:1}}
])

我在其中查找具有字段值=“val”的数组元素并对它们进行计数。这工作得很好,但我不知道如何在 MongoDB Compass 中做同样的事情 enter image description here

在查询栏中,我有“过滤器”、“项目”和“排序”,我可以进行常规查询,但我不知道如何使用聚合方法。 谢谢

mongodb aggregate mongodb-compass
2个回答
5
投票

您正在查看文档选项卡,该选项卡仅限于查询文档。

查看名为 Aggregations 的第二个选项卡,您可以像往常一样在其中进行聚合管道。

有关更多信息,请访问聚合管道生成器文档。


0
投票
db.questions.aggregate([
  { $match: { language: "java" } },
  { $count: "total_count" },
]);

这是计数操作聚合函数的简单示例。在这里,“questions”是我的集合名称,您可以将其替换为数据库中的实际集合名称。

“match”子句设置聚合的标准。在这种情况下,

{language:"java"}
过滤“语言”字段等于“java”的文档。

输出为: 在此输入图片描述

© www.soinside.com 2019 - 2024. All rights reserved.