当前位置: 首页 > 编程笔记 >

MongoDB聚合分组多个结果

刘嘉木
2023-03-14
本文向大家介绍MongoDB聚合分组多个结果,包括了MongoDB聚合分组多个结果的使用技巧和注意事项,需要的朋友参考一下

要聚合多个结果,请在MongoDB中使用$group。让我们创建一个包含文档的集合-

> db.demo765.insertOne(
...
...    {
...       Name:"John",
...       "Category":"ComputerScience",
...       "SubjectName":"MongoDB",
...       "Marks":75
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eb054525637cd592b2a4b01")
}
>
> db.demo765.insertOne(
...    {
...       Name:"John",
...       "Category":"ComputerScience",
...       "SubjectName":"MySQL",
...       "Marks":85
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eb054525637cd592b2a4b02")
}
> db.demo765.insertOne(
...    {
...       Name:"Chris",
...       "Category":"10th",
...       "SubjectName":"Math",
...       "Marks":98
...    }
... );
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5eb054535637cd592b2a4b03")
}

在find()方法的帮助下显示集合中的所有文档-

> db.demo765.find();

这将产生以下输出-

{ "_id" : ObjectId("5eb054525637cd592b2a4b01"), "Name" : "John", "Category" : "ComputerScience", "SubjectName" : "MongoDB", "Marks" : 75 }
{ "_id" : ObjectId("5eb054525637cd592b2a4b02"), "Name" : "John", "Category" : "ComputerScience", "SubjectName" : "MySQL", "Marks" : 85 }
{ "_id" : ObjectId("5eb054535637cd592b2a4b03"), "Name" : "Chris", "Category" : "10th", "SubjectName" : "Math", "Marks" : 98 }

以下是汇总组多个结果的查询-

> db.demo765.aggregate([
...    { "$facet": {
...       "ListOfName": [
...          { "$group": {
...             "_id": "$Name",
...             "Marks": { "$sum": "$Marks" }
...          }},
...          { "$project": {
...             "_id": false,
...             "Name": "$_id",
...             "Marks": 1
...          }}
...       ],
...       "ListOfCategory": [
...          { "$group": {
...             "_id": "$Category",
...             "Marks": { "$sum": "$Marks" }
...          }},
...          { "$project": {
...             "_id": false,
...             "Category": "$_id",
...             "Marks": 1
...          }}
...       ]
...    }}
... ]).pretty()

这将产生以下输出-

{
   "ListOfName" : [
      {
         "Marks" : 98,
         "Name" : "Chris"
      },
      {
         "Marks" : 160,
         "Name" : "John"
      }
   ],
   "ListOfCategory" : [
      {
         "Marks" : 98,
         "Category" : "10th"
      },
      {
         "Marks" : 160,
         "Category" : "ComputerScience"
      }
   ]
}

 类似资料:
  • 在mongodb聚合调用中,如何使用$group操作符将管道中的所有文档分组为一个结果? 假设我有一组记录,看起来像这样: 我想使用聚合函数在数据库中查询在给定日期范围内注册的用户列表,并将其作为列表返回。我想要一个如下的结果: 我的查询如下所示: 到目前为止,一切顺利。我现在有一部分记录,所有记录的注册日期都在所需的范围内。但这就是我遇到麻烦的地方。现在,我想将所有这些记录分组到一个包含所有ID

  • 我的mongoDB集合中有一千多个文档,其中每个文档都表示这样一首歌的数据: 现在,在聚合管道的帮助下,我想按以下方式对我的集合进行分组。到目前为止,我可以对1个阶段进行分组,但我很难将整个根文档进行到底,并进行嵌套分组。 列出所有流派-

  • 我有以下计数查询: 有没有办法使用single aggregation()和嵌套的$group来实现这一点mongodb@3.2? 我知道这是mapReduce()的一个经典用例,但我在这里没有选择,因为$group by parameters()是一个动态生成的属性,因此聚合阶段的构建也是动态的。 预期输出与两个计数查询的结果相同。-

  • 我有索引,其中每个文档都有这样的结构: 我需要计算每个演员对应的电影数量(演员可以在actor_1_name、actor_2_name或actor_3_name字段中) 这3个字段的映射是: 有没有一种方法,我可以聚合的结果,可以结合所有3个演员领域的条款,并给出一个单一的聚合。 目前,我正在为每个actor字段创建单独的聚合,并通过我的JAVA代码将这些不同的聚合合并成一个。 通过创建不同的聚合

  • 假设我有一个MongoDB集合,其中包含以下信息: 我想计算按州分组的订单总价的总和,其中项目为“苹果”,颜色为“红色”。我的问题是: 但是,我希望能够将我的结果cust\u id包含在\u id中,它是一个数组/映射/一些结构,其中包含构成我的合计的所有客户id的列表。因此,我希望我的输出包含 是否有办法处理此mongo聚合/查询?或者是一种更好的方式来构造此查询,以便我可以按州分组计算红苹果的

  • 我使用的是MongoDB 3.2。 在这个问题上遇到问题。。。 (为类似SQL的语法提前道歉,我只是从SQL学习Mongo) 我需要找到文件的数量 按类别分组 订购人 有没有办法将查询中的字符串转换为日期?我知道我在存储shop2。当日期应为ISODate时,将其作为字符串。如果不是,我们就假设它是一个ISODate。 下面是一个文档示例: 任何帮助都将不胜感激。谢谢 我已经更新了所有的shop1