使用mongodb聚合框架统计数组中的项目出现次数

问题描述 投票:0回答:1

我正在与express和mongodb一起工作的项目中(我正在使用mongoose),并且具有以下结构的集合:

[
{
    "_id": "5e4a39f01ab49e48d4db5b9c",
    "last": {
        "winningNumbers": {
            "list": [
                66,
                71,
                62,
                50,
                29,
                67,
                74,
                43,
                22,
                1,
                11,
                3,
                80,
                17,
                57,
                53,
                30,
                19,
                76,
                40
            ],
            "bonus": [
                40
            ]
        }
    }
},
{
    "_id": "5e4a3b1c1ab49e48d4db5cb8",
    "last": {
        "winningNumbers": {
            "list": [
                71,
                46,
                79,
                60,
                1,
                14,
                19,
                73,
                34,
                55,
                5,
                65,
                12,
                47,
                16,
                62,
                51,
                53,
                3,
                45
            ],
            "bonus": [
                45
            ]
        }
    }
}

]

[我试图使用mongodb聚合框架来计算整个集合中last.winningNumber.list数组中每个数字的出现,但是我没有实现。

我想输出以下内容:

{
    "occurrences": [
        {number:1,count:3},
        {number:2,count:8},
        {number:12,count:15},
        ...
        {number:78,count:55},
    ]
}

有什么方法可以使用$ group来实现,还是应该使用其他方式?

谢谢!

mongodb express group-by aggregation-framework find-occurrences
1个回答
0
投票

$ group是实现此目的的方法,但是您必须先对数组进行$ unwind。

© www.soinside.com 2019 - 2024. All rights reserved.