【问题标题】:MongoDB : how to find max sequenced documents in mongoMongoDB:如何在 mongo 中查找最大排序文档
【发布时间】:2021-07-26 12:03:40
【问题描述】:

我在一个名为“Student”的集合中有以下 MongoDB 文档。 本文档包含有关 Student 和修订信息的详细信息。我基本上是想根据一些过滤条件从中得到最大的序列。

{
    
    "student": {
        name : "Rahul",
        age  : 18,
        department : "CSE",
        section : "B"
    },
    
    "sequence": 0,
    "student_ref": "AUTCSE024",
    "college" : "AUT"
}

{
    
    "student": {
        name : "Rahul",
        age  : 18,
        department : "CSE",
        section : "A"
    },
    
    "sequence": 1,
    "student_ref": "AUTCSE024",
    "college" : "AUT"
}

{
    
    "student": {
        name : "Kumar",
        age  : 18,
        department : "IT",
        section : "A"
    },
    
    "sequence": 0,
    "student_ref": "AUTITE011",
    "college" : "AUT"
}

{
    
    "student": {
        name : "Kumar",
        age  : 18,
        department : "IT",
        section : "C"
    },
    
    "sequence": 1,
    "student_ref": "AUTITE011",
    "college" : "AUT"
}

{
    
    "student": {
        name : "Praveen",
        age  : 18,
        department : "IT",
        section : "C"
    },
    
    "sequence": 0,
    "student_ref": "AUTITE016",
    "college" : "AUT"
}

{
    
    "student": {
        name : "Praveen",
        age  : 18,
        department : "IT",
        section : "C"
    },
    
    "sequence": 1,
    "student_ref": "AUTITE016",
    "college" : "AUT"
}

所以从上述文档中,我想要基于 max(sequence) 和“student.department”的输出:“IT”。预期的结果应该是

{
    
    "student": {
        name : "Kumar",
        age  : 18,
        department : "IT",
        section : "C"
    },
    
    "sequence": 1,
    "student_ref": "AUTITE011",
    "college" : "AUT"
}
{
    
    "student": {
        name : "Praveen",
        age  : 18,
        department : "IT",
        section : "C"
    },
    
    "sequence": 1,
    "student_ref": "AUTITE016",
    "college" : "AUT"
}

请告诉我如何实现这一目标。

【问题讨论】:

  • “最大”的定义是什么?是否有一些分组条件,然后您想在每个组中获取最大序列?
  • 对于给定的“student_ref”值,它可以返回超过 1 个文档。因此,只需要获取一个“序列”具有最大数量或值的文档。

标签: mongodb mongodb-query aggregation-framework


【解决方案1】:

您可以使用$lookup 中的子管道来聚合最大序列号。然后通过将sequence 字段与聚合的最大序列号匹配来过滤学生结果。

这是Mongo playground 供您参考。

【讨论】:

    猜你喜欢
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    相关资源
    最近更新 更多