迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MongoDB >

MongoDB 中的 SELECT COUNT GROUP BY

作者:迹忆客 最近更新:2023/03/17 浏览次数:

在本文中,将讨论 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 BYCOUNT

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 BYCOUNTSORT

$sortByCount 在该组中被 count 排序主题使用,它与 $group 相同,加上 $sort.。它可以用于对一个组进行升序和降序排序和计数。

在下面的示例中,一些文档被添加到数据集合中。find() 函数用于查看它有多少条记录。

find() 的查询将是:

db.data.find()

下一步是展开``courses 数组并使用 $sortByCount 函数计算添加到每个课程的文档数量。此步骤的查询是:

db.data.aggregate([
{
    $unwind: "$courses"
},
{
    $sortByCount: "$courses"
}
])

这是 MongoDB 对数组进行分组、计数和排序的最直接的方法。

按 2 分组

MongoDB GROUP BYCOUNT 多个字段

你可以利用 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 BYCOUNT

db.Request.aggregate([
    {"$group" : {_id:"$source", count:{$sum:1}}}
])

具有多个字段的 MongoDB GROUP BYCOUNT

db.Request.aggregate([
    {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}}
])

MongoDB GROUP BYCOUNT 使用带有多个字段的字段进行排序

db.Request.aggregate([
    {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}},
    {$sort:{"_id.source":1}}
])

MongoDB GROUP BYCOUNT 使用多个字段进行排序

db.Request.aggregate([
    {"$group" : {_id:{source:"$source",status:"$status"}, count:{$sum:1}}},
    {$sort:{"count":-1}}
])

本文详细讨论了操作,也讨论了聚合操作。首先,用代码段简要讨论了不同类型的聚合函数。

然后讨论了 GROUP BYCOUNT,包括排序、查找和多个字段。然后使用 field 和 count 命令讨论 GROUP BYCOUNT

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

比较 MongoDB 中的字段

发布时间:2023/04/21 浏览次数:51 分类:MongoDB

在本文中,我们将了解如何比较 MongoDB 中的两个字段。 此外,我们将看到一个相关的示例和解释,以使主题更容易理解。

清除或删除 MongoDB 中的集合

发布时间:2023/04/21 浏览次数:147 分类:MongoDB

本篇文章将告诉大家如何删除 MongoDB 数据库中的集合以及删除 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 中的稀疏索引。 此外,我们将提供一个相关示例并进行解释,以使该主题更容易理解。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便