如何在mongodb聚合中获取嵌入式集合的总和?

萨钦·穆图马拉(Sachin Muthumala)

我在使用mongodb聚合时遇到一些问题。这是数据收集,

{
 "subject":"maths",
 "year" : "2018"
 "marks" : [
   {
    "stuId" : "0001",
    "mark" : "90"
   },
   {
    "stuId" : "0002",
    "mark" : "56"
   }
 ]
}
{
 "subject":"science",
 "year" : "2018"
 "marks" : [
   {
    "stuId" : "0001",
    "mark" : "50"
   },
   {
    "stuId" : "0002",
    "mark" : "65"
   }
 ]
}

我想计算每个学生的分数总和,并取如下所示的每个分数的平均值,

//sum of maths and science subjects

{ "year" : "2018", "stuId" : "0001", "sum": "140"},
{ "year" : "2018",  "stuId" : "0002",  "sum": "121"}

我已经尝试过此代码。没有任何结果。

 mark.aggregate([
        {
            $match: {
                "year": year
            },
        },
        { $unwind: "$marks" },
        {
            $group: {
                "id": "$marks.stuId", "Total": { $sum: "$marks.mark" }
            }
        }
    ],
        function (err, results) {

            res.send(results)
            console.log(results)
        }
    );
巴斯·莫斯基蒂

假设您可以嘲笑后期组_id应该这样做stuId
顺便说一句,我强烈建议您修改数据设计,使其year成为实际datetime类型,并且mark是整数。以字符串的形式携带这些东西会使道路上的一切变得更加困难。

var inp = "2018";

c = db.foo.aggregate([
{$match: {"year": inp}}

,{$unwind: "$marks"}

,{$group: {_id: "$marks.stuId",
           sum: {$sum: {$toInt: "$marks.mark"} },
           avg: {$avg: {$toInt: "$marks.mark"} }
    }}

]);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在嵌入式数组mongodb中查询嵌入式文档

如何在 MongoDb 中查询嵌入式文档?

如何在mongodb中搜索嵌入式文档?

mongodb聚合中的项目嵌套嵌入式文档

从mongodb集合中的嵌入式数组对象仅获取特定字段

在MongoDB聚合管道中,如何投影匹配的嵌入式数组的索引?

如何在MongoDB中使用数组获取嵌入式文档(使用Mongoose)

如何在C ++中嵌入Chromium嵌入式框架

聚合管道中的嵌入式文档集合中的参考文档字段

如何在MongoDB中的嵌入式数组对象中插入json对象?

如何在MongoDB中查询数组中的单个嵌入式文档?

MongoDB,如何获取刚在嵌入式文档中创建的ObjectId?

如何从MongoDB集合中获取聚合

如何在某些测试中禁用梦话嵌入式的MongoDB

如何在MongoDB的数组字段中查询和删除嵌入式对象?

如何在mongoDB中的嵌入式文档中提取特定元素

如何在mongoDB中的多对多关系中使用嵌入式文档结构?

与数组比较,如何在mongodb中检索部分嵌入式文档?

如何查看对象是否包含在嵌入式NSArray中,然后获取集合中的其他项

如何对MongoDB中的嵌入式对象进行排序

如何在Pyspark中获取嵌入式Angular JavaScript文本框值

MongoDB:检索、过滤和排序 MongoDB 嵌入式集合

Mongodb:如何使用聚合框架仅返回嵌入式文档

根据mongoDB聚合中的条件,项目嵌入式文档密钥值

MongoDB聚合:从嵌入式数组中删除某些元素(已编辑?)

通过在嵌入式对象中搜索键范围在mongodb中进行聚合

通过MongoDB中的聚合框架将嵌入式对象作为文档检索

MongoDB 复杂聚合查询以求和嵌入式数组中的元素,有限制

MongoDB查询-聚合和嵌入式文档