如何在 MongoDB 中打印最小结果 [英] How to print minimum result in MongoDB

查看:38
本文介绍了如何在 MongoDB 中打印最小结果的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

MongoDB 菜鸟在这里...

MongoDB noob here...

所以,我试图在一个看起来像这样的集合中打印出最小值分数...

So, I'm trying to print out the minimum value score inside a collection that looks like this...

        > db.students.find({'_id': 1}).pretty()
        {
                "_id" : 1,
                "name" : "Aurelia Menendez",
                "scores" : [
                        {
                                "type" : "exam",
                                "score" : 60.06045071030959
                        },
                        {
                                "type" : "quiz",
                                "score" : 52.79790691903873
                        },
                        {
                                "type" : "homework",
                                "score" : 71.76133439165544
                        },
                        {
                                "type" : "homework",
                                "score" : 34.85718117893772
                        }
                ]
        }

我使用的咒语就是这样......

The incantation I'm using is as such...

db.students.aggregate(
    // Initial document match (uses index, if a suitable one is available)
    { $match: {
        _id : 1
    }},

    // Expand the scores array into a stream of documents
    { $unwind: '$scores' },

    // Filter to 'homework' scores 
    { $match: {
        'scores.type': 'homework'
    }},

    // grab the minimum value score
    { $match: {
        'scores.min.score': 1
    }}
)

我得到的输出是这个...

the output i'm getting is this...

{ "result" : [ ], "ok" : 1 }

我做错了什么?

推荐答案

> db.students.aggregate(     
{ $unwind:  "$scores" },`
{ $match:{"scores.type":"homework"} }, 
{ $group: { 
    _id : "$_id", 
   maxScore : { $max : "$scores.score"}, 
   minScore: { $min:"$scores.score"} 
  }
});

如何聚合每个mongoDB 集合中的项目

这篇关于如何在 MongoDB 中打印最小结果的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆