MongoDB 中的 SELECT COUNT GROUP BY
在本文中,将讨论 MongoDB 中的函数。此外,将详细指出聚合函数。
我们将详细解释在 MongoDB 中对 Group 的多个和单个字段进行计数和排序的不同方法。
MongoDB 中的操作
允许用户浏览、搜索和更改数据库元素的用户界面原则称为 CRUD 操作。
连接到服务器、查询相应的文档、在将数据发送回数据库进行处理之前进行修改以及更改设置属性是修改 MongoDB 文档的方式。
CRUD 是一个使用 HTTP 动作动词标准化的数据驱动过程。以下是 CRUD 操作及其用途。
聚合操作
它是一种数据处理操作,由多个阶段组成,这些阶段对分组数据执行多个操作以提供单个输出。下面给出了执行聚合操作的三种方法:
聚合管道
文档被送入一个多级管道,将它们组合成一个输出。MongoDB 聚合过程有几个阶段。
例子:
db.collection_name.aggregate([
//First stage
{ $match: { status: "" } },
//Second stage
{ $group: { _id: "$cust_id", total: { $sum: "$amount" } } },
//Third Stage
{ $sort : {sort_field: -1 }}
])
单一目的聚合方法
单一用途的聚合方法很简单,但缺乏聚合管道的功能。
Map-Reduce 过程
从 MongoDB 5.0 开始,不推荐使用 map-reduce 过程。请改用聚合管道。
MongoDB GROUP BY
和 COUNT
MongoDB 中每个文档的 _id
字段都已按值分配了一个唯一的组。然后,数据由聚合过程处理,提供计算结果。
下面给出一个例子。在这里,你可以看到数据库的配置。
此配置将用于本文提供的所有代码示例。
db={
"data": [
{
"_id": ObjectId("611a99100a3322fc1bd8c38b"),
"fname": "Tom",
"city": "United States of America",
"courses": [
"c#",
"asp",
"node"
]
},
{
"_id": ObjectId("611a99340a3322fc1bd8c38c"),
"fname": "Harry",
"city": "Canada",
"courses": [
"python",
"asp",
"node"
]
},
{
"_id": ObjectId("611a99510a3322fc1bd8c38d"),
"fname": "Mikky",
"city": "New Zealand",
"courses": [
"python",
"asp",
"c++"
]
},
{
"_id": ObjectId("611b3e88a60b5002406571c3"),
"fname": "Ron",
"city": "United Kingdom",
"courses": [
"python",
"django",
"node"
]
}
]
}
使用的上述数据库的查询是:
db.data.aggregate([
{
$group: {
_id: "ObjectId",
count: {
$count: {}
}
}
}
])
MongoDB GROUP BY
、COUNT
、SORT
$sortByCount
在该组中被 count 排序主题使用,它与 $group
相同,加上 $sort.
。它可以用于对一个组进行升序和降序排序和计数。
在下面的示例中,一些文档被添加到数据集合中。find()
函数用于查看它有多少条记录。
find()
的查询将是:
db.data.find()
下一步是展开``courses
数组并使用 $sortByCount
函数计算添加到每个课程的文档数量。此步骤的查询是:
db.data.aggregate([
{
$unwind: "$courses"
},
{
$sortByCount: "$courses"
}
])
这是 MongoDB 对数组进行分组、计数和排序的最直接的方法。
MongoDB GROUP BY
和 COUNT
多个字段
你可以利用 MongoDB 中的 aggregate()
方法来计算许多字段。因此,$count
用于对字段进行计数。
下面给出了一个示例,其中时间戳仅用于一个条目。在这个例子中,一些论文可以保存在 student
集合中,你可以利用 find()
函数来确定你有多少文档。
db.student.aggregate([ {$group: {_id: {name:"$name",
timestamp:"$timestamp" }}},
{$count:"timestamp"}
])
MongoDB GROUP BY
日期和 COUNT
当你想要计算特定日期文档时,你可以使用计数聚合并计算特定日期文档。
在下面的示例中,你将学习计算 2021 年每一天的总销售额和销售额。
你可以在销售集合中添加字段产品 ID、项目名称、价格、数量和日期。find()
函数可以获取文档。
db=
{
"_id" : 1,
"item" : "abc",
"price" : NumberDecimal("10"),
"quantity" : 2,
"date" : ISODate("2021-03-01T08:00:00Z")
}
{
"_id" : 2,
"item" : "jkl",
"price" : NumberDecimal("20"),
"quantity" : 1,
"date" : ISODate("2021-03-01T09:00:00Z")
}
{
"_id" : 3,
"item" : "xyz",
"price" : NumberDecimal("5"),
"quantity" : 10,
"date" : ISODate("2021-03-15T09:00:00Z")
}
{
"_id" : 4,
"item" : "xyz",
"price" : NumberDecimal("5"),
"quantity" : 20,
"date" : ISODate("2021-04-04T11:21:39.736Z")
}
{
"_id" : 5,
"item" : "abc",
"price" : NumberDecimal("10"),
"quantity" : 10,
"date" : ISODate("2021-04-04T21:23:13.331Z")
}
上述配置的查询将是:
db.date.aggregate([
{
$match : { "date": { $gte: new ISODate("2021-01-01"), $lt: new ISODate("2015-01-01") } }
},
{
$group : {
_id : { $dateToString: { format: "%Y-%m-%d", date: "$date" } },
totalSaleAmount: { $sum: { $multiply: [ "$price", "$quantity" ] } },
count: { $sum: 1 }
}
},
{
$sort : { totalSaleAmount: -1 }
}
])
现在使用 COUNT
和 FIELD 命令在下面给出单个字段组和多个字段组的查询。
具有单个字段的 MongoDB GROUP BY
和 COUNT
db.Request.aggregate([
{"$group" : {_id:"$source", count:{$sum:1}}}
])
具有多个字段的 MongoDB GROUP BY
和 COUNT
db.Request.aggregate([
{"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}}
])
MongoDB GROUP BY
和 COUNT
使用带有多个字段的字段进行排序
db.Request.aggregate([
{"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}},
{$sort:{"_id.source":1}}
])
MongoDB GROUP BY
和 COUNT
使用多个字段进行排序
db.Request.aggregate([
{"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}},
{$sort:{"count":-1}}
])
本文详细讨论了操作,也讨论了聚合操作。首先,用代码段简要讨论了不同类型的聚合函数。
然后讨论了 GROUP BY
和 COUNT
,包括排序、查找和多个字段。然后使用 field 和 count
命令讨论 GROUP BY
和 COUNT
。
相关文章
比较 MongoDB 中的字段
发布时间:2023/04/21 浏览次数:51 分类:MongoDB
-
在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。
清除或删除 MongoDB 中的集合
发布时间:2023/04/21 浏览次数:147 分类:MongoDB
-
本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 MongoDB 中的集合的不同方法。
向 MongoDB 集合中的每个文档添加新字段
发布时间:2023/04/21 浏览次数:107 分类:MongoDB
-
您将在这篇文章中了解 $set 和 $setOnInsert 操作。 此外,利用这两个运算符,快速描述了向 MongoDB 中的集合添加字段的挑战。
MongoDB 截断集合
发布时间:2023/04/21 浏览次数:178 分类:MongoDB
-
可以根据需要选择两个选项之一来截断下面的集合。 在今天的文章中,我们将学习如何在 MongoDB 中截断集合。
删除 MongoDB 中的重复项
发布时间:2023/04/21 浏览次数:151 分类:MongoDB
-
在本文中,我们将了解如何删除 MongoDB 中的重复条目,并且我们还将看到一个带有适当解释的示例,以使主题更容易理解。
使用 NodeJS 检查 MongoDB 中是否存在集合
发布时间:2023/04/21 浏览次数:194 分类:MongoDB
-
在本文中,我们将检查 MongoDB 数据库中是否存在一个集合,并且我们还将查看与主题相关的示例,以使主题更容易理解。 为此,我们将使用 Node.js。
MongoDB 中的唯一索引
发布时间:2023/04/21 浏览次数:144 分类:MongoDB
-
在这篇教学文章中,您将了解唯一索引、它们是什么以及如何在 MongoDB 中使索引唯一。 此外,还简要详细地解释了使用户的电子邮件在 MongoDB 中唯一。
在 MongoDB 中创建索引
发布时间:2023/04/21 浏览次数:104 分类:MongoDB
-
索引有助于有效解决查询。 如果没有索引,MongoDB 必须遍历集合中的每个文档才能找到与查询匹配的文档。因此,在今天的文章中,我们将学习如何在 MongoDB 中创建索引。
MongoDB 中的稀疏索引
发布时间:2023/04/21 浏览次数:142 分类:MongoDB
-
在本文中,我们将讨论 MongoDB 中的稀疏索引。 此外,我们将提供一个相关示例并进行解释,以使该主题更容易理解。